T(0,0,?3)?S(1,1,?1)?T(0,0,3)?1?0???0??0?1?0???0??0
(4) 在以过坐标原点的任意直线为旋转轴作旋转变换的变换矩阵中代入向量值及旋转角度,得变换矩阵如下:
01000100001?300?160??1??00??0??0??1??00??0?0??1?010000?100??1??00??0??0??1??0010000130??0?0? ?1?R(?)?Rx(?)Ry(?)Rz(?)Ry(??)Rx(??)22?n1?(1?n1)cos??n1n2(1?cos?)?n3sin????nn(1?cos?)?nsin?132?0??n1n2(1?cos?)?n3sin?n2?(1?n2)cos?n2n3(1?cos?)?n1sin?062?2?62?62?61?30266?0???0??0??1??22n1n3(1?cos?)?n2sin?n2n3(1?cos?)?n1sin?n3?(1?n3)cos?0220??0?0??1???1?2?3??2?2?6??6?2?2?6?6?0??2?2?621?2?32?60
(5) 利用(4)中的变换矩阵加以平移,得变换矩阵如下:
T(?x0,?y0,?z0)?R(?)?T(x0,y0,z0)?2?52?12??2?2?43?12??2?2?3?6???2?2?3?6?
2?2?432?2?2?62?33122?52122?2?6?2?2?63364?262?26?0???0?? 0???1??习题19答案
习题19. 设三维空间有一个平面,其方程为Ax + By + Cz + D = 0,要通过平移和旋转组合的变换,使其重合于z = 0坐标平面,求变换矩阵。 解答:
设给定平面与x轴的交点为P1,与y轴的交点为P2,与z轴的交点为P3。
y P2 O P ? 1? x P4 P3 z 如上图所示,根据平面方程,可知与三个坐标轴的交点坐标,分别为
P1(?DA,0,0);P2(0,?DB,0);P3(0,0,?DC);
从P2点作线段P1P3的垂线,与P1P3的交点为P4。 设?OP1P3为?,?OP4P2为?
将指定平面变换到与z = 0坐标平面重合,可以通过以下步骤完成:
y P2 ? ? O P4 x P3 z
P1
首先,做平移T(0,0,DC),使P3点与原点O重合,如上图所示。
然后,做旋转Ry(??),使P3P1重合于x坐标轴,如下图所示。
y P2 ? O P3 P4 P1 x
z
最后,做旋转Rx(?2??),使P2点也落入z = 0坐标平面中,此时P1,P2,P3三点都在z = 0坐标平面中,原始平
面重合于z = 0坐标平面。 即变换矩阵为:
M?T(0,0,?1?0???0??0?0100DC)?Ry(??)?Rx(0??cos(??)?0?0??0??sin(??)?1??0???20100??)
001DC?sin(??)0cos(??)0?10????00??0??0?1????00cos(?sin(0??)??)sin(cos(?2??220??)??)?200??0??0??1??因为有:
∵sin(??)??sin?,cos(??)?cos? ???,cos(??)?sin? sin(??)?cos22所以有变换矩阵为:
M?T(0,0,?1?0???0??0?0100DC)?Ry(??)?Rx(0??cos??0?0??0???sin???1?0???2??)
001DC0100sin?0cos?00??1??00??0??0??1??00sin??cos?00cos?sin?00??0?0??1?根据第一幅图所示,可以计算出三角函数值: ∵P1P3的长度为
DA?CAC22,OP3的长度为
CA?C22DC,OP1的长度为
DA
∴sin??AA?C22,cos??
∵
OP4OP1?OP3P1P3
∴OP4的长度为
DA?C22,同时OP2的长度为
22DB
∴P2P4的长度为
DA?B?CBA?C22222
∴sin??A?C222,cos??BA?B?C222
A?B?C这里计算长度时没有取绝对值,因为根据第一幅图进行变换的时候实际假定了平面与三个坐标轴的交点都在坐标轴的正方向上,所以为了考虑一般性,计算三角函数值的时候带入了方向性(正负)。 所以最终变换矩阵为:
M?T(0,0,D?C)?Ry(??)?Rx(2??)?1000???cos0sin?0??1000??0100?????0100??sin?cos?0??0010????0??D0cos?0??0?cos?sin?0???00C1???sin?????0001????0001???cos?0sin?0???1000?0100?????0sin?cos?0???sin?0cos?0????D?0?cos?sin?0????Csin?0DCcos?1?????0001???cos??sin?cos?sin?sin?0??sin?cos?0???0???sin??cos?cos?cos?sin?0??D???Csin??DDCcos?cos?Ccos?sin?1???0100?100??C??20A0??A2?C2B0100?A?C2A2?C2????10??00A2?B2?C222??A2?B?C?0010??0???2?DA2?C???A0C20??1??B?22??A?CA2?C??0A2?B2?C2A2?B2?00C?C2?0001?????000?C?ABA?220??C2A2?B2?C2A?B2?C2??A2?C2A??A2?C2B?00?A2?B2?C2A2?B2?C2?????A???BCC0?A2?C2A2?B2?C2A2?B2?C2??A2?C2??DA???BDD1??CA2?C2A2?C2A2?B2?C2A2?B2?C2??可以验证此变换矩阵的正确性,设点(x0,y0,z0)为平面上一点,该点经上面的变换矩阵变换后,z坐标值: z’ =
Ax0?By0?Cz0?DA2?B2?C2
而作为平面上一点,必然有Ax0?By0?Cz0?D?0,所以z’ = 0,该变化后平面与z = 0坐标平面重合。 需要说明的是,这里假定了A、B、C三个值都不为0,即最一般的情况。
0?0????0??1??