我有两个三角形朝向任意的方向。我有两个三角形的前向向量,我想要对齐每个前向向量,以面对相同的方向。我只有能力做世界x,y和z轴旋转(我使用的软件API是非常有限的)。
设A=第一个三角形的正向向量,B=第二个三角形的正向向量。我可以用这个方程找到旋转矩阵:
v = B X A
s = ||v||
c = A dot B
vx = skew-symmetric cross-product matrix of v
R = I + [vx] + [vx]^2 * (1-c)/s^2
我能找到R。
我不知道如何使用R,这样才能移动三角形B的顶点,使三角形B和三角形A朝同一个方向。
供参考的图片:
提前感谢大家的帮助。
发布于 2014-10-02 21:16:19
您可以使用归一化向量v作为轴,使用A和B之间的角T从轴角计算旋转矩阵(右手规则),方法如下:
| cosT + x*x*(1 - cosT) y*x*(1 - cosT) + z*sinT z*x*(1 - cosT) - y*sinT |
| x*y*(1 - cosT) - z*sinT cosT + y*y*(1 - cosT) z*y*(1 - cosT) + x*sinT |
| x*z*(1 - cosT) + y*sinT y*z*(1 - cosT) - x*sinT cosT + z*z*(1 - cosT) |
x,y,z值是指归一化的v坐标。
现在,将这个矩阵应用到B中的每个顶点。
PS:这个矩阵是按列的主要顺序排列的,你可能想把它转过来.
https://stackoverflow.com/questions/26164672
复制