如下图:
已知:n,v。现在v围绕n旋转角变成V'。
V't = Vt cos + Wsin。
替换Vt和W
V11 = (v*n)n
Vt = V - V11 = v - (v*n)n
w = n x vt = n x (v - v11) = n x v - n x v11 = n x v
v't = (v - (v * n)n)*cos + (n x v)sin
带入v'的表达式:
v' = v't + v11 = (v - (v * n)n)*cos + (n x v)sin + (v*n)n 。
现在就获得了v'与v,n,的关系。用这个构造变换矩阵。
首先我们构造x基向量
p = [1 0 0]
p' =( p - (p * n)n)*cos + (n x p)sin + (p*n)n
p' = [nx^2(1 - cos) + cos,nx * ny(1 - cos) +nz*sin,nx*nz(1 - cos) - ny*sin]
同理求的y基向量
q = [0,1,0]
q' = [nx*ny(1 - cos) - nz * sin,ny*ny(1 - cos) + cos,ny*nz(1 - cos) + nz* sin]
同理求的z基向量
r = [0,0,1]
r' = [nx * nz (1 - cos) + ny*sin,ny * nz(1 - cos) - nx* sin,nz*nz(1 - cos) + cos]
这样我们就获得了这样的一个旋转矩阵:
M = [
nx^2(1 - cos) + cos,nx * ny(1 - cos) +nz*sin,nx*nz(1 - cos) - ny*sin,
nx*ny(1 - cos) - nz * sin,ny*ny(1 - cos) + cos,ny*nz(1 - cos) + nz* sin,
nx * nz (1 - cos) + ny*sin,ny * nz(1 - cos) - nx* sin,nz*nz(1 - cos) + cos
]