我正在创建一个C ++ ifc导入程序。
我有一个方向向量,我想从中挤出一个部分。该部分本身是一个2d点的列表。 为了计算挤出方向,我必须将非变换方向与变换矩阵相乘。
矩阵在x
,y
和z
(如欧拉角)中有变换。
我必须计算挤出方向周围的旋转角度。
我有一个矩阵类,它从a返回欧拉角 矩阵:
matrix.ExtractEulerXYZ(x,y,z)
问题在于我可以使用x
,y
或z
的旋转方向向量,如何选择正确的角度x
,{从挤出方向{1}}或y
?
答案 0 :(得分:0)
2d点位于2d空间中的位置(x,y)和3d空间中的(x,y,0)。
3d空间中的欧拉角定义了xyz轴的3个旋转,以将xyz轴旋转到指定点。也就是说,如果在x轴上标记x轴上与点的距离正确的点,则沿XY平面旋转轴a,沿ZY平面旋转b,沿ZX平面旋转c。
请参阅http://en.wikipedia.org/wiki/Euler_angles中“与物理运动的关系”部分中的动画 - 特别是,请遵循最初投射到左下角的x轴的进度。
如果您只有2d点,则ZY和ZX旋转不会执行任何操作 - 您只是围绕XY轴旋转。因此,您可以使用简单的三角函数(SOH CAH TOA)来查找从原点到点的线的角度;没有必要使用矩阵。