步骤分解(一) 第一步,使O轴绕X轴旋转,使得Or轴位于y=0平面中,见图,此 时旋转角度q1为 C C b P1=cos CoS p1 b2+ Sin pl= b C 故,变换矩阵为: 0 0 coS, Sin 0 T(1)2 0-sin, Cos,0 L00 第二步,使OI轴绕Y轴旋转,使其与Z轴重合,由于OI轴绕X轴旋 转时,其长度不变(仍为单位向量),且x坐标不变。见图,此时旋转角 度g2为 6-+c p2 = cos coSv6 +C- cos o,=vb2+c sin p =a 由于2的旋转方向与Y轴的方向相反,故变换矩阵为: cos -sim 2 0 0100 72(-(2) sin ,0 COS 0, 0 000
步骤分解(一) 第一步,使OI轴绕X轴旋转,使得OI’ 轴位于y=0平面中,见图,此 时旋转角度φ1为: 2 2 1 1 cos b c c + = − 2 2 1 cos b c c + = 2 2 1 sin b c b + = 故,变换矩阵为: x T x − = 0 0 0 1 0 sin cos 0 0 cos sin 0 1 0 0 0 ( ) 1 1 1 1 1 1 第二步,使OI’ 轴绕Y轴旋转,使其与Z轴重合,由于OI 轴绕X轴旋 转时,其长度不变(仍为单位向量),且x坐标不变。见图,此时旋转角 度φ2为: 1 2 2 2 2 1 2 cos | | cos b c OI b c = + + = − − 2 2 2 cos = b + c sin 2 = a 由于φ2的旋转方向与Y轴的方向相反,故变换矩阵为: y T y − − = 0 0 0 1 sin 0 cos 0 0 1 0 0 cos 0 sin 0 ( ) 2 2 2 2 2 2
步骤分解(二) 第三步,让P点绕Z轴旋转0角,变换矩阵为 cos0 sin 0 o sin 6 cos600 73() 0010 00 第四步,实现第二步的逆运算,饶Y轴旋转q2还原。故变换矩阵为 cos p, SIn 92 74=72(2) sin 2 0 cos p2 「<p
步骤分解(二) 第三步,让P’ 点绕Z轴旋转θ角,变换矩阵为 z T z − = 0 0 0 1 0 0 1 0 sin cos 0 0 cos sin 0 0 ( ) 3 第四步,实现第二步的逆运算,饶Y轴旋转φ2还原。故变换矩阵为 y T T y − = = 0 0 0 1 sin 0 cos 0 0 1 0 0 cos 0 sin 0 ( ) 2 2 2 2 4 2 2
步骤分解(三) 第五步,实现第一步的逆运算,饶X轴旋转-φ还原。故变换矩阵为 1000 7=1(-)|0c0-sm0 0 sin COS P 0 00 0 Y因此,P点饶任意原点轴的变换矩阵:「4=2+(1-a)s T=T·72…·73·74·7 B=ab(1-cos 0)+csin 8 AB C0 C=ac(1-cos 0)+bsin B D=ab(1-cos 0)-csin 0 DEFO E=b+(1-b)cos 0 GH 0 F=bc(l-cos 0)+asin 6 000 G=ac(1-cos 0)+bsin 8 H=bc(l-cos 0)-asin 0 坐标变换: I=C+(1-C)cos 6 P=[x' yzl=[x y z 1].TD
步骤分解(三) 第五步,实现第一步的逆运算,饶X轴旋转-φ1还原。故变换矩阵为 x T T x − = − = 0 0 0 1 0 sin cos 0 0 cos sin 0 1 0 0 0 ( ) 1 1 1 1 5 1 1 因此,P点饶任意原点轴的变换矩阵: = = 0 0 0 1 0 0 0 1 2 3 4 5 G H I D E F A B C T T T T T T 坐标变换: P =[x y z 1] =[x y z 1]T = + − = − − = − + = − + = + − = − − = − + = − + = + − (1 ) cos (1 cos ) sin (1 cos ) sin (1 cos ) sin (1 ) cos (1 cos ) sin (1 cos ) sin (1 cos ) sin (1 ) cos 2 2 2 2 2 2 I c c H bc a G ac b F bc a E b b D ab c C ac b B ab c A a a
例题 q- input('请输入原点轴的顶点Q的坐标(xy):); =q(1/sqrt(q*q; bq(2)/sqrt(q*q; c=q( 3)/sqrt(q* q); ceta= Input'请输入绕轴旋转的角度:") ca=cos(ceta); sa=sin(ceta); T=zeros(4, 4) T(.1)=12+01a2)e;:(a+b(ea)+e:1.)=aet(1 ca)-b*sa; T(2,1)=a*b(1-ca)-esa;T(2,2)b^2+(1-b^2)ea;T(2,3)=b°c*(1- ca)ta T(3,1)=a*c*(1-ca)+bsa;T(3,2)=bc*(l-ca)-asa;T(3,3)=c^2+(1 2)ca; T(4;)=0;T(:,4)=0;T(44)=1: p=inpu(·请输入原始点的坐标:’); Pp 1*T
例题 q=input('请输入原点轴的顶点Q的坐标([x y z]):'); a=q(1)/sqrt(q*q'); b=q(2)/sqrt(q*q'); c=q(3)/sqrt(q*q'); ceta=input('请输入绕轴旋转的角度:'); ca=cos(ceta);sa=sin(ceta); T=zeros(4,4); T(1,1)=a^2+(1-a^2)*ca; T(1,2)=a*b*(1-ca)+c*sa; T(1,3)=a*c*(1- ca)-b*sa; T(2,1)=a*b*(1-ca)-c*sa; T(2,2)=b^2+(1-b^2)*ca; T(2,3)=b*c*(1- ca)+a*sa; T(3,1)=a*c*(1-ca)+b*sa; T(3,2)=b*c*(1-ca)-a*sa; T(3,3)=c^2+(1- c^2)*ca; T(4,:)=0;T(:,4)=0;T(4,4)=1; p=input(‘请输入原始点的坐标:’); pp=[p 1]*T
六、逆变换与坐标变换 逆变换-就是与原变换相反的变换,逆变换的变换矩阵为原变换矩 阵的逆。 与二维图形变换一样,三维图形几何变换也能通过变换坐标系来实现, 并有结论:坐标系的变换与在该坐标系中图形变换的方向相反,但变换 效果与变换矩阵的效果相同。 例:已知在相对坐标系OUVW中定义一个平面,现通过矩阵T,把该平 28面切换到绝对坐标系OXY中。求该平面在绝对坐标系中的矩阵表达式 解:设在OUVW坐标系中,该平面为: Au+Bv+Cw+D=0 E JUVw1JABCDT=0 在OXYZ坐标系中,该平面为: Ax+By+C+D’=0或Ixyz1A”BCD]T=0 根据已知,两坐标系间的变换矩阵位T:xyz1{uyw1T 则:{ UVW1TA B'C’DT=0TABC,DT=ABCD]T 进而:ABCD]T=T1|ABCD]T
六、逆变换与坐标变换 逆变换---就是与原变换相反的变换,逆变换的变换矩阵为原变换矩 阵的逆。 与二维图形变换一样,三维图形几何变换也能通过变换坐标系来实现, 并有结论:坐标系的变换与在该坐标系中图形变换的方向相反,但变换 效果与变换矩阵的效果相同。 例:已知在相对坐标系O’UVW中定义一个平面,现通过矩阵T,把该平 面切换到绝对坐标系OXYZ中。求该平面在绝对坐标系中的矩阵表达式。 解:设在O”UVW坐标系中,该平面为: Au+Bv+Cw+D=0 或 [u v w 1]. [A B C D] T =0 在OXYZ坐标系中,该平面为: A’x+B’y+C’z+D’=0 或 [x y z 1] . [A’ B’ C’ D’] T =0 根据已知,两坐标系间的变换矩阵位T: [x y z 1]=[u v w 1].T 则: [u v w 1].T. [A’ B’ C’ D’]T=0 T. [A’ B’ C’ D’] T = [A B C D] T 进而:[A’ B’ C’ D’] T = T –1 . [A B C D] T