仿射坐标系中的点P(v,Q)绕向量u旋转θ角,转换后的点为T(P),有:
T(P)=Q+T(v)
根据罗德里格斯公式(Rodiguez's formula), 向量v绕向量u旋转所得向量为:
T(v)=(cosθ)v+(1-cosθ)(v•u)u+(sinθ)(u×v)
其中, (v•u)u=[v1,v2,v3]Tensor(u,u);u×v=[v1,v2,v3]U
Tensor称为张量积,定义Tensor(u,v)=Translate(u)*v,其中,Translate表示转置,*表示矩阵乘法。其结果为3×3矩阵:
u1v1, u1v2, u1v3
u2v1, u2v2, u2v3
u3v1, u3v2, u3v3
而U为叉积的乘法矩阵:
0, u3, -u2
-u3, 0, u1
u2, -u1, 0
将v提取出来,得到:
T(v) = vR = v( (cosθ)I + (1-cosθ)Tensor(u,u) + (sinθ)U ),I为3×3单位矩阵
所以,若Q为原点,则旋转矩阵为:Matrix2×2{ R, 0, 0, 1 }
若Q不是原点,则要先将点P转换到以Q为原点的坐标系中(平移),旋转后再逆转换回来:
M=Matrix2×2{ 1, 0, -Q, 1 }
N=Matrix2×2{ 1, 0, Q, 1 }
T = MRN = Matrix2×2{ R, 0, Q-QR, 1}
没有评论:
发表评论