旋转轴:绕轴旋转问题

在图形学坐标变换中绕轴旋转是非常重要和常见例如在生成Camera和World变换关系时广泛使用
以前曾得到过这个变换公式但已经忘了是如何导出甚或是直接抄来现在索性重新推导
设轴矢量为[x,y,z]
为构成右手系A系需要补充两个正交向量:
[e,f,g]
[u,v,w]
根据右手系有以下关系:
u=y*g-z*f
v=z*e-x*g
w=x*f-y*e
e=v*z-w*y
f=w*x-u*z
g=u*y-v*x
x=f*w-g*v
y=g*u-e*w
z=e*v-f*u
由A系到原坐标系坐标变换矩阵是:
A=[e,u,x;
f,v,y;
g,w,z]
矢量旋转坐标变换矩阵是:
R=[c,-s,0;
s,c,0;
0,0,1]
于是总绕轴旋转矩阵是:
T=A*R*A’
=[(e*c+u*s)*e+(-e*s+u*c)*u+x^2,(e*c+u*s)*f+(-e*s+u*c)*v+x*y,(e*c+u*s)*g+(-e*s+u*c)*w+x*z;
(f*c+v*s)*e+(-f*s+v*c)*u+x*y,(f*c+v*s)*f+(-f*s+v*c)*v+y^2,(f*c+v*s)*g+(-f*s+v*c)*w+y*z;
(g*c+w*s)*e+(-g*s+w*c)*u+x*z,(g*c+w*s)*f+(-g*s+w*c)*v+y*z,(g*c+w*s)*g+(-g*s+w*c)*w+z^2]
=[x^2*(1-c)+c,x*y*(1-c)-z*s,x*z*(1-c)+y*s;
x*y*(1-c)+z*s,y^2*(1-c)+c,y*z*(1-c)-x*s;
z*x*(1-c)-y*s,y*z*(1-c)+x*s,z^2*(1-c)+c]

只依赖于轴矢量和旋转角度和曾经那个公式相仿
Tags:  坐标轴旋转matlab 旋转轴对称图形 坐标轴旋转 旋转轴

延伸阅读

最新评论

发表评论