2012-02-14 54 views
0

我正在创建一个C++ ifc进口商。欧拉角和挤压方向

我有一个方向矢量,我想挤出一个部分。该部分本身是一个2d点的列表。 要计算挤出方向,我必须将非变换方向与变换矩阵相乘。

该矩阵在x,yz(如欧拉角)中具有变换。

我必须计算围绕拉伸方向的旋转角度。

我有一个返回欧拉从 矩阵角矩阵类:

matrix.ExtractEulerXYZ(x,y,z)

的问题是,我可以有一个具有在xyz旋转的方向矢量,如何我可以从拉伸方向选择正确的角度xyz

+0

你在做2D矢量的3D数学吗?这不建议。至少将所有点生成为,但除此之外,您是在尝试确定这些角度,还是仅对点进行转换?也为什么不只是做矢量加法?您可能还想考虑其他标签。因为这看起来不是特定于语言的,并且更像是一个普通的[数学]事物 – gardian06 2012-02-14 19:42:36

回答

0

2d点在2d空间的位置(x,y)和3d空间的(x,y,0)。

三维空间中的欧拉角定义了xyz轴的3次旋转以将xyz轴旋转到指定点。也就是说,如果您在x轴上标记x轴上与该点正确距离的点,则沿着XY平面将a轴旋转a,沿ZY平面旋转轴b,沿ZX平面旋转轴c。

请参阅http://en.wikipedia.org/wiki/Euler_angles中“与物理运动的关系”部分中的动画 - 特别是,请遵循最初投影到左下角的x轴的进度。

如果您只有2d点,则ZY和ZX旋转不起任何作用 - 您只是围绕XY轴旋转。因此,您可以使用简单的三角函数(SOH CAH TOA)来查找从原点到点的直线的角度;没有必要使用矩阵。