math - 来自 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 个边缘点所在的方向。从技术上讲,您可以创建不是立方体的东西,因为这种格式允许倾斜的侧面,但在我正在使用的文件中从未以这种方式使用过。
解决方案
推荐阅读
- r - 使用 Shiny 写入和保存到 excel 文件
- ios - 如何将特定颜色转换为 HSV/RGB 标量值(通道 4)?
- postgresql - 将数据从 postgres 数据库移动到具有不同所有者的另一个数据库
- bash - 如何检查 .sql 脚本执行是否成功?
- java - 模拟 DateFormat、SimpleDateFormat、Date 类
- flutter - 将值从 android 传递到颤振,但不是从主要活动
- python - Python 数组 3D 转视频
- powershell - Export-Csv 等价于 Write-Output
- javascript - javascript中的自制文本转语音无法正常工作
- python - tslearn.clustering.TimeSeriesKMeans 与 sklearn.cluster.KMeans