符工:下面这段代码中,rotMatrix.ROW.X = 2 : rotMatrix.RowY.X = 4: rotMatrix.RowY.Y = 5,知道是调整圆的角度的,不知道怎么用?
Sub TestCreateEllipseC() Dim CPoint As Point3d Dim myEllipse As EllipseElement Dim rotMatrix As Matrix3d CPoint.X = 2.5: CPoint.Y = 2.5 rotMatrix.RowX.X = 2 rotMatrix.RowY.X = 4: rotMatrix.RowY.Y = 5 Set myEllipse = CreateEllipseElement2(Nothing, CPoint, 1, 0.5, rotMatrix) ActiveModelReference.AddElement myEllipse End Sub
分析如下:
rotMatrix是一个三乘三的矩阵(可以看做是RowX、RowY和RowZ或ColumnX、ColumnY和ColumnZ),从列来看,第一列的三个数表示旋转后坐标系的X轴(我称之为X'轴),第二列为旋转后坐标系的Y轴(Y‘轴),第三列为旋转后坐标系的Z轴(Z’轴)。
以上设置中,凡是没有赋值的默认都为0。所以,X‘轴为(2,4,0), Y’轴为(0,5,0), Z‘轴为(0,0,0)。由于它们三个需要正交,所以,当X’轴确定后,Y‘和Z’轴的值会自动调整。这样,新的坐标系的X轴就是从(0,0,0)起始指向(2,4,0)方向的一个矢量。该方向作为椭圆主轴(或称之为长轴)的方向。如下图所示:
RowX.X=2 和RowY.X=4仅仅表示一个方向,你把它们分别改成1和2也还是这个方向,绘制出的椭圆也还是一样的。
Answer Verified By: zhiying guo
不完全正确。仍以例子中的值为例,Y'被指定为(0,5,0),则X'和Y'构成的平面是新坐标系的XY平面,Z'按右手法则可确定为(0,0,1)。如果将 Y'设置为(5,0,0),则Z'为(0,0,-1),绘制出的椭圆面的法向就会和现在的正好反方向。所以说,整个坐标系的确定不仅仅是靠第一列的三个值就能确定的。 话又说回来,这段代码这样写并不推荐,最好将三个矢量都赋值完全比较好理解。