首页 > 解决方案 > 来自 3 个向量的 3D 立方体旋转

问题描述

我目前正在处理我无法控制的文件,这些文件定义了具有 5 个矢量的 3D 立方体,一个用于中心位置,一个用于半尺寸,以及 3 个以某种方式构成旋转的矢量。我正在努力弄清楚如何将这 3 个向量变成 3 个角度,以便在我的渲染引擎中轻松使用。

例如,我可能有以下向量:

Position
X: -655.48, Y: 477.02, Z: -3.30

Size
X: 435.57, Y: 29.79, Z: 138.53

Rotation
X: 0.91, Y: -0.41, Z: 0.00
X: 0.41, Y:  0.91, Z: 0.00
X: 0.00, Y:  0.00, Z: 1.00

有了位置和大小(乘以 2),我可以轻松创建一个立方体,但缺少旋转。因为我知道盒子应该是什么样子,所以我知道立方体的旋转角度应该是 0°、0°,以及大约 -24°、156° 或 336°,具体取决于您如何旋转它. 不幸的是,我不知道如何把一个变成另一个。

弄清楚甚至要寻找什么来解决这个问题一直很有挑战性,因为我不知道我到底在看什么。我假设我必须以某种组合获取这些值并计算每个轴的角度,可能使用 atan2?但我在这里超出了我的深度。

再举一个例子,这是一个不旋转的立方体。

X: 1.00, Y: 0.00, Z: 0.00
X: 0.00, Y: 1.00, Z: 0.00
X: 0.00, Y: 0.00, Z: 1.00

我将不胜感激任何帮助破译这一点。

更新:我意识到我对预期角度的解释表述不当,所以这里有一个快速附录。

角度,我的意思是 3 个角度,用于围绕 X、Y 和 Z 旋转。我目前正在 Unity 引擎中对此进行测试,在那里我可以轻松地围绕中心点创建一个给定大小的框,以及我的特定示例是关于一个这样的盒子,它需要角度 X:0°、Y:0° 和 Z:-24°,才能出现,因为我知道它应该出现。这些值来自我试图简单地将立方体放入我需要的旋转中。

根据我目前的理解,这些旋转值实际上代表的是所有 3 个轴上的方向,它描述了立方体的 8 个边缘点所在的方向。从技术上讲,您可以创建不是立方体的东西,因为这种格式允许倾斜的侧面,但在我正在使用的文件中从未以这种方式使用过。

标签: math3dgeometryrotation

解决方案


推荐阅读