建立椭圆

符工:下面这段代码中,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
Parents
  • 分析如下:

    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 

  • 知道了,再确认一下。rotMatrix.RowX.X ,rotMatrix.RowY.X ,rotMatrix.RowZ.X 代表的是旋转后X轴上某点的坐标。原点不变的话,Y轴和Z轴也随之确定。
  • 不完全正确。仍以例子中的值为例,Y'被指定为(0,5,0),则X'和Y'构成的平面是新坐标系的XY平面,Z'按右手法则可确定为(0,0,1)。如果将 Y'设置为(5,0,0),则Z'为(0,0,-1),绘制出的椭圆面的法向就会和现在的正好反方向。所以说,整个坐标系的确定不仅仅是靠第一列的三个值就能确定的。
    话又说回来,这段代码这样写并不推荐,最好将三个矢量都赋值完全比较好理解。



    Answer Verified By: zhiying guo 

  • 嗯。确实是,刚才着急了没仔细想。仅根据原点和一个轴及其方向确定不了一个坐标系。你说的右手法则能猜到,是说确定一个面及其方向后,根据该法则可确定Z轴的方向。但Z轴上某点的坐标是要经过一定的计算吧,还是有捷径?
Reply Children
No Data