3d 二维矢量到三维矢量

3d 二维矢量到三维矢量,3d,vector,2d,3d,Vector,2d,我试着用正反方向在平面上画一个圆。当它与x、y或z轴对齐时,它工作得很好,但我需要一些更动态的东西。有没有办法使用平面法线或其他解决方案将二维向量转换为三维向量?您可能想查看一下因此,如果我答对了您的问题,您想在三维空间中画一个不直接面对其中一个轴的圆?这样做的一种方法是首先使用法线3D向量作为中心,并以2D方式围绕它绘制一个圆,使其仍然面对一个轴(忽略第三个坐标)。要旋转圆,需要使用旋转矩阵并将其应用于生成圆的点。这方面的数学模型是: raw_point = Center + ( cos(an

我试着用正反方向在平面上画一个圆。当它与x、y或z轴对齐时,它工作得很好,但我需要一些更动态的东西。有没有办法使用平面法线或其他解决方案将二维向量转换为三维向量?

您可能想查看一下

因此,如果我答对了您的问题,您想在三维空间中画一个不直接面对其中一个轴的圆?这样做的一种方法是首先使用法线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这样的代码语言中使用这个方法,你首先需要创建一个包含矩阵数学的类。如果有必要,我可以告诉你这些,因为我也有过一次基于维度的问题