图2.11 相对于参考坐标系的点的坐标和从x轴上观察旋转坐标系
可见,为了得到在参考坐标系中的坐标,旋转坐标系中的点P(或向量P)的坐标必须左乘旋转矩阵。这个旋转矩阵只适用于绕参考坐标系的x轴做纯旋转变换的情况,它可表示为: Pxyz?Ro(t,?x?)noa (2.18) P注意在式(2.17)中,旋转矩阵的第一列表示相对于x轴的位置,其值为1,0,0,它表示沿x轴的坐标没有改变。
为简化书写,习惯用符号C?表示cos?以及用S?表示sin?。因此,旋转矩阵也可写为:
?10 Rot(x,?)???0C???0S??10? Rot(x,?)?0C????0S?u0??S?? ? (2.19)C???0??S?? ? (2.20)C???可用同样的方法来分析坐标系绕参考坐标系y轴和z轴旋转的情况,可以证明其结果为:
0??10??S?? 和 Rot(x,?)?0C????C????0S?式(2.18)也可写为习惯的形式,以便于理解不同坐标系间的关系,为此,可将该变换
R表示为TR (读作坐标系R相对于坐标系U(Universe)的变换),将Pnoa表示为P(P相对于
坐标系R),将
Pxyz
u表示为P(P相对于坐标系U),式(2.18)可简化为:
uP?uTR?TR (2.21) P由上式可见,去掉R便得到了P相对于坐标系U的坐标。
例2.5 旋转坐标系中有一点P?234?,此坐标系绕参考坐标系x轴旋转90度。求旋转后该点相对于参考坐标系的坐标,并且用图解法检验结果。
解:
由于点P固连在旋转坐标系中,因此点P相对于旋转坐标系的坐标在旋转前后保持不变。该点相对于参考坐标系的坐标为:
0?Px??1?P???0cos??y????Pz????0sin???Pn??100??2??2??P???00?1??3????4?
?sin????o???????cos?????Pa????010????4????3??0如图2.12所示,根据前面的变换,得到旋转后P点相对于参考坐标系的坐标为2,-4,3.
图2.12 相对于参考坐标系的坐标系旋转
2.5.3 复合变换的表示
复合变换是由固定参考坐标系或当前运动坐标系的一系列沿轴平移和绕轴旋转变换所组成的。任何变换都可以分解为按一定顺序的一组平移和旋转变换。例如,为了完成所要求的变换,可以先绕x轴旋转,再沿x,y,z轴平移,最后绕y轴旋转。在后面将会看到,这个变换顺序很重要,如果颠倒两个依次变换的顺序,结果将会完全不同。
为了探讨如何处理复合变换,假定坐标系(n,o,a)相对于参考坐标系(x,y,z)依次进行了下面三个变换:
(1)绕x轴旋转?度;
(2)接着平移?l1l2l3?(分别相对于x,y,z轴); (3)最后绕y轴旋转?度。
比如点Pnoa固定在旋转坐标系,开始时旋转坐标系的原点与参考坐标系的原点重合。随着坐标系(n,o,a)相对于参考坐标系旋转或者平移时,坐标系中的P点相对于参考坐标系也跟着改变。如前面所看到的,第一次变换后,P点相对于参考坐标系的坐标可用下列方程进行计算。
P1,xyz?Rot(x,?)?Pnoa (2.22)
其中,P1,xyz是第一次变换后该点相对于参考坐标系的坐标。第二次变换后,该点相对于参考坐标系的坐标是:
P?Tra(ns1,l2l,?3l)1,xyP?2x,yzzTra(n1,sl2?,l3)l?R?(o,tx) noaP同样,第三次变换后,该点相对于参考坐标系的坐标为:
Tr(a1,ns2l,?l3)l?(R?o,t)xP noa 可见,每次变换后该点相对于参考坐标系的坐标都是通过用每个变换矩阵左乘该点的坐
Pxyz?P3,xyz?Ro(t,?y)?2,Px?R(o?t,y)?yz标得到的。当然,矩阵的顺序不能改变。同时还应注意,对于相对于参考坐标系的每次变换,矩阵都是左乘的。因此,矩阵书写的顺序和进行变换的顺序正好相反。
例2.6 固连在坐标系(n,o,a)上的点P?732?经历如下变换,求出变换后该点相对于参考坐标系的坐标。
(1)绕z轴旋转90度;
(2)接着绕y轴旋转90度; (3)接着再平移[4,-3,7]。 解:
表示该变换的矩阵方程为:
Pxyz?Tra(n4s,?3,7)Rot(y,9n0)Po?a?1?0??0??001004??0?3??17??01?0???????001001001?00?0??0?0?0?1??0?1??0??010000?0???1??0?0?0??0??1????????7?3??2??1?
?6?4??01??1T
从图2.13可以看到,(n,o,a)坐标系首先绕z轴旋转90度,接着绕y轴旋转,最后相对于参考坐标系的x,y,z轴平移。坐标系中的P点相对于n,o,a轴的位置如图所示,最后该点在
x,y,z轴上的坐标分别为4+2=6,-3+7=4,7+3=10。请确认也能从图中理解上述结果。
图2.13 三次顺序变换的结果
T例2.7 根据上例,假定(n,o,a)坐标系上的点P?732?经历相同变换,但变换按如下不同顺序进行,求出变换后该点相对于参考坐标系的坐标。 (1)绕z轴旋转90度;
(2)接着平移[4,-3,7]; (3)接着再绕y轴旋转90度。 解:
表示该变换的矩阵方程为:
Pxyz?Rot(y,90)Trans(4,?3,7)Rot(z,90)Pnoa?010??1004??0?100??7??9??010?3??1000??3??4?100??????????????000??0017??0010??2???1??????????001??0001??0001??1??1?
不难发现,尽管所有的变换与例2.6完全相同,但由于变换的顺序变了,该点最终坐标与前例完全不同。用图2.14可以清楚地说明这点,这时可以看出,尽管第一次变换后坐标系的变化与前例完全相同,但第二次变换后结果就完全不同,这是由于相对于参考坐标系轴的
?0?0???1??0平移使得旋转坐标系n,o,a向外移动了。经第三次变换,该坐标系将绕参考坐标系y轴旋转,因此向下旋转了,坐标系上点P的位置也显示在图中。
请证明该点相对于参考坐标系的坐标为7+2=9,-3+7=4和-4+3=-1,它与解析的结果相同。
??
图2.14 变换的顺序改变将改变最终结果
2.5.4 相对于旋转坐标系的变换
到目前为止,本书所讨论的所有变换都是相对于固定参考坐标系。也就是说,所有平移、旋转和距离(除了相对于运动坐标系的点的位置)都是相对参考坐标系轴来测量的。然而事实上,也有可能做相对于运动坐标系或当前坐标系的轴的变换。例如,可以相对于运动坐标系(也就是当前坐标系)的n轴而不是参考坐标系的x轴旋转90度。为计算当前坐标系中的点的坐标相对于参考坐标系的变化,这时需要右乘变换矩阵而不是左乘。由于运动坐标系中的点或物体的位置总是相对于运动坐标系测量的,所以总是右乘描述该点或物体的位置矩阵。
例2.8 假设与例2.7中相同的点现在进行相同的变换,但所有变换都是相对于当前的运动坐标系,具体变换出如下。求出变换完成后该点相对于参考坐标系的坐标。 (1)绕a轴旋转90度;
(2)然后沿n,o,a轴平移[4,-3,7]; (3)接着绕o轴旋转90度。
解:
在本例中,因为所作变换是相对于当前坐标系的,因此右乘每个变换矩阵,可得表示该坐标的方程为:
Pxyz?Rot(a,90)Trans(4,?3,7)Rot(o,90)Pnoa??0?1?10??00??0000100??1?00????0??0??1??0010004??0?00?3????17???1??01??0010010000??7??0??3??6?0????????0??2??0??????1??1??1?
如所期望的,结果与其他各例完全不同,不仅因为所作变换是相对于当前坐标系的,而且也因为矩阵顺序的改变。下面的图展示了这一结果,应注意它是怎样相对于当前坐标来完成这个变换的。
同时应注意,在当前坐标系中p点的坐标7,3,2是变换后得到相对于参考坐标系的坐标0,6,0的。
图2.15 相对于当前坐标系的变换
例2.9 坐标系B绕x轴旋转90°,然后沿当前坐标系a轴做了3英寸的平移,然后在绕z轴旋转90,最后沿当前坐标系o轴做5英寸的平移。
(a)写出描述该运动的方程。