2

我有一个数组,其中包含 3d 建模信息 x、y、z 坐标,用于旋转并放置在所需姿态的结构。我还有一个新数组,它具有类似的结构,没有旋转或放置。新结构坐标从 [0 0 0] 开始。通过将正确旋转的数组的第一个元素添加到非结构化数组中,很容易将结构的第一部分放到正确的位置。我现在的问题是轮换。如何旋转新元素以使其与正确旋转数组的 x、y 和 z 中的角度相匹配?谢谢

4

1 回答 1

2

如果您可以从数据中找到三个代表向量upfrontright,那么旋转矩阵将是:

[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];

相反,如果你知道你的几何图形包含一个立方体(甚至可能缩放......)
然后知道旋转顶点数组中的哪个点对应于点 oFRU,在立方体的情况下,这在很大程度上是一个问题选择...

 U
 |
 |        ___---F
 |  ___---    
 o--
    --__
        --R

前向量 = (Fo)/|Fo|,右 = (Ro)/|Ro|,上 = (Uo)/|Uo|

于 2012-10-06T08:29:37.540 回答