我有一个数组,其中包含 3d 建模信息 x、y、z 坐标,用于旋转并放置在所需姿态的结构。我还有一个新数组,它具有类似的结构,没有旋转或放置。新结构坐标从 [0 0 0] 开始。通过将正确旋转的数组的第一个元素添加到非结构化数组中,很容易将结构的第一部分放到正确的位置。我现在的问题是轮换。如何旋转新元素以使其与正确旋转数组的 x、y 和 z 中的角度相匹配?谢谢
user1158903
问问题
385 次
1 回答
2
如果您可以从数据中找到三个代表向量up、front和right,那么旋转矩阵将是:
[rx ux fx ox]
[ry uy fy oy]
[rz uz fz oz]
[ 0 0 0 1]
其中 O = [ox oy oz] 是原点
如果您对旋转结构的几何结构有足够的了解,这是可行的。
从单位矩阵和旋转矩阵的解释可以看出它为什么起作用:
在参考坐标系中
'Right' = [1 0 0 0],
'Up' = [0 1 0 0],
'Front' = [0 0 1 0],
Multiplying each of these by the rotation matrix:
[a d g 0] Right*R = [a b c 0];
R=[b e h 0] Up * R = [d e f 0];
[c f i 0] Front*R = [g h i 0];
[0 0 0 1]
If there is no rotation, R = I == identity matrix;
Then Right * I = [1 0 0 0]; Up*I = [0 1 0 0 ]; Front*I = [0 0 1 0];
相反,如果你知道你的几何图形包含一个立方体(甚至可能缩放......)
然后知道旋转顶点数组中的哪个点对应于点
o,F,R,U,在立方体的情况下,这在很大程度上是一个问题选择...
U
|
| ___---F
| ___---
o--
--__
--R
前向量 = (Fo)/|Fo|,右 = (Ro)/|Ro|,上 = (Uo)/|Uo|
于 2012-10-06T08:29:37.540 回答