2D矢量到3D矢量

时间:2009-11-25 05:42:16

标签: 3d vector 2d

我正试图用sin和cos在一架飞机上制作一个圆圈。虽然它与x,y或z轴对齐时效果很好,但我需要更具动感的东西。有没有办法使用平面法线或其他解决方案将2D矢量转换为3D矢量?

2 个答案:

答案 0 :(得分:1)

您可能需要查看MathOverflow.

答案 1 :(得分:0)

所以,如果我的问题是正确的,你想在3D空间中绘制一个直接面向其中一个轴的圆?这样做的方法是首先使用普通的3D矢量作为中心,并以2D方式围绕它绘制一个圆,因此它仍然面向其中一个轴(忽略第三个坐标)。要旋转圆,您需要使用旋转矩阵并将它们应用于生成圆的点。对此的数学将是:

raw_point = Center + ( cos(angle)|sin(angle) )

          [raw_point.x]   [1][0             ][0              ]   [cos(YRotation)][0][-sin(YRotation)]   [cos(ZRotation)][-sin(ZRotation)][0]
3DPoint = [raw_point.y] * [0][cos(XRotation)][-sin(XRotation)] * [0             ][1][0              ] * [sin(ZRotation)][cos(ZRotation) ][0]
          [raw_point.z]   [0][sin(XRotation)][cos(XRotation) ]   [sin(YRotation)][0][cos(YRotation) ]   [0             ][0              ][1]

(括号块是矩阵)

如果您需要进一步解释方式(旋转)矩阵,请在维基百科上查找。 顺便说一句。如果你想在像java这样的代码语言中使用这个方法,你首先需要创建一个包含矩阵数学的类。如果有必要,我可以告诉你这些,因为我有一次基于维度的问题。