来自 x 和 y 旋转的 3D 矢量坐标

3D Vector coordinates from x and y rotation

这个问题我试了好几次google,但我只找到了关于“旋转矩阵”的文章。

我有 3d 坐标系和两个角度:α 用于 x 旋转,β 用于 y 旋转(我不确定我是否在图中正确定位了角度).

我需要找到 Vector(x_1, y_1, z_1)

的坐标

请帮我算出公式。

让我们把它分成两个转换。

从 (0,0,1) 处的单位向量开始,我们将首先应用 alpha 变换。

您可以将围绕 y-axis 的旋转视为二维变换,而完全忽略 y-axis。然后,使用变换角度 (alpha) 的 cos 和 sin 获取 x 和 z 分量就变得简单了。我们知道矢量的长度是 1,因为它是一个单位矢量,但您的矢量可以是任意长度——只需将 cos 和 sin 方程乘以您的矢量长度即可。

第一次转换给我们留下了这个公式:

(x1, y, z1) => (sin(alpha), 0, cos(alpha))

假设您的变换角度从 +z 轴开始,随着它的增加,角度围绕 y-axis(或 XZ 平面)逆时针移动。

对于第二个变换,我们绕垂直于矢量的轴旋转。我们将做一些非常相似的事情,但这次用 x1 和 z1 代替我们的新值 sin(alpha) 和 cos(alpha)。

得到 y1 就像以前一样简单地取你的 β 角的正弦值,但是变换 x1 和 z1 需要我们通过这个三角形的余弦分量来缩放 x1 和 z1。这是因为当我们围绕它们的垂直轴旋转时,x1 和 z1 之间的关系不会改变。

想象一个圆心在原点,圆周上有一个点在 (x1, 0, z1)。当我们围绕该圆旋转矢量时,x1 和 z1 相对于中心点缩放,但它们的比率不会改变。

我们所要做的就是通过 β 角的余弦分量对这两个数字进行缩放。我在这里标记了那个欧米茄。

这给我们留下了最终公式

(x2, y1, z2) => (cos(beta)*sin(alpha), sin(beta), cos(beta)*cos(alpha))