计算几何在3D打印机中的应用(3)
时间:2018-03-22 20:47 来源:毕业论文 作者:毕业论文 点击:次
'Get the angle around the Z axis difference between a pair of Vector3s.' 分析: 本段函数中,使用atan2函数计算出"subtractVec3在xoy平面上的投影"到"subtractFromVec3在xoy平面上的投影"的夹角。 (2)defgetAngleDifferenceByComplex(subtractFromComplex,subtractComplex): 'Get the angle between a pair of normalized complexes.' subtractComplexMirror=complex(subtractComplex.real,-subtractComplex.imag) differenceComplex = subtractComplexMirror * subtractFromComplex returnmath.atan2(differenceComplex.imag,differenceComplex.real) 'Get the angle between a pair of normalized complexes.' 分析: 本段函数中,先使用complex函数将两个向量转化为复数形式,再使用atan2函数得出两个复数的夹角。 2.2源代码分析 2.2.1面积算法分析 在Python源代码中,利用向量叉积来求三角形面积,任意两边向量的叉积的绝对值的1/2即为三角形的面积。 叉积(即交叉乘积)也被称为向量积、外积,是一种在向量空间中向量的二元运算。设向量P=(x,y),Q=(a,b),而PQ的叉积仍然是一个向量,其长度可以表示为: |PQ|=xb-ay 设三角形ABC,顶点坐标分别为(A.x,A.y),(B.x,B.y),(C.x,C.y) 并对算出后的面积使用abs()函数取绝对值,再利用For循环将所有三角形面积相加得出最后的多边形面积。 2.2.2夹角算法分析 在Python源代码中,将两个三文向量(x,y,z)投影在XOY平面上得到相对应的二文向量(x,y,0),利用complex函数将二文向量转化为复数形式。再利用atan2函数求得夹角。 Atan2函数: 返回给定的X及Y坐标值的反正切值。反正切的角度值等于X轴正方向与通过原点和给定坐标点(Y坐标,X坐标)的射线之间的夹角。结果以弧度表示并介于-pi到pi之间(不包括-pi)。 3 C语言算法设计与说明 本节利用前述Python算法原理,通过C语言来实现向量叉积求解多边形面积,反正切函数求解向量的夹角以及新添加的三个功能的设计。 3.1面积算法 3.1.1 叉积求解 下面是两种将求解多边形面积问题转化为多个求三角形面积的方法: (1)将多边形内的一点与多边形各个顶点连接起来,将多边形划分为多个三角形,如图3.1所示。分别求出每个三角形的面积,累加起来即为多边形的面积。 (责任编辑:qin) |