我正试图用sin和cos在一架飞机上制作一个圆圈。虽然它与x,y或z轴对齐时效果很好,但我需要更具动感的东西。有没有办法使用平面法线或其他解决方案将2D矢量转换为3D矢量?
答案 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这样的代码语言中使用这个方法,你首先需要创建一个包含矩阵数学的类。如果有必要,我可以告诉你这些,因为我有一次基于维度的问题。