习题12答案
习题12. 若已知某一正方形显示器的坐标范围是以dxmin、dxmax、dymin和dymax规定的矩形区,且(dymax – dymin) = 3/4 (dxmax - dxmin),为保证图形不失真并充分利用显示区,请写出自用户坐标至该显示器坐标的视见变换矩阵。 解答:
设用户坐标区的坐标范围是以wxmin、wxmax、wymin和wymax规定的矩形区域。为保证图形在此显示器上显示不失真,其视见变换矩阵如下:
H?T1?S?T2?T(?wxmin,?wy1???0????wxminmin)?S(43k,k)?T(dxmin,dymin)0k0?0??1?0?0??1???dxmin???0?k0??1???dymax?dyminwymax01?wymin?40??k3??00??1???0??0kdymin?wy01dymin0??0?1??
4?k?3??0?4?dxmin?wxmink3??k如下确定:设kx?mindxmax?dxminwxmax?wxmin?34,因为有
,ky??wymin?34,k?min(kx,ky)
(1) 若
wymax?wyminwxmax?wxmindymax?dymindxmax?dxmin;
,所以有
wymax?wyminwxmax?wxmin?dymax?dymindxmax?dxmin,所以有
kx?ky,则k?dymax?dyminwymax?wymin(2) 若
wymax?wyminwxmax?wxmin?34,即kx?ky,则k?dxmax?dxminwxmax?wxmin
习题15答案
习题15. 给出三维空间中通过原点和点(x1,y1,z1)的一条直线,试用下面提示的三种不同方法把这条直线旋转到正的z轴上,说明求出的三个变换矩阵可能不同,但就完成要求表换得效果看是相同的。 (1)绕x轴旋转到xz平面,然后绕y轴旋转到z轴; (2)绕y轴旋转到yz平面,然后绕x轴旋转到z轴; (3)绕z轴旋转到xz平面,然后绕y轴旋转到z轴。 解答:
(1)绕x轴旋转到xz平面,然后绕y轴旋转到z轴
??1000??v??v0x1?zu?01y10x1u0????uz?vv0???u??0100?x1y11y1???z1?????vu?0?y1??uv0?x1z?vv0?x1???0vu?y1z1??0001?u?????0001?1?????uvvu?000v?y221?z1,u?x2221?y1?z1cos??z1/v,sin??y1/v,cos??v/u,sin???x1/u (x1,y1,z1,1)?(x1,0,v,1)?(0,0,u,1)y (x1,y1,z1) α O β x (x1, 0, v) z (2)绕y轴旋转到yz平面,然后绕x轴旋转到z轴
0???0?? 0??1??
??x1?z000??z?x1y1?10x10??1?u?vv??vy1??1?vuv?y1?0100??0uu0?v?z?1???0uu?y1v??x?10uu0???y1z1z1?vv0????0??001??x1uvu?0001???0???????v??000v?x222221?z1,u?x1?y1?z1cos???z1/v,sin???x1/v,cos??v/u,sin??y1/u (x1,y1,z1,1)?(0,y1,v,1)?(0,0,u,1)y (0, y1,v) (x1,y1,z1) β O α x z (3)绕z轴旋转到xz平面,然后绕y轴旋转到z轴
?x1?y1???x??y1x1vv00?1??z1???0vvu?y?u0?z??1?uv?0??y1z1x1y1?1x1vv00??u010????z1?0??vu??uv?v?0010???v0??uu0z1?0001?0001???????????uu??000v?x221?y1,u?x2221?y1?z1cos??x1/v,sin???y1/v,cos??z1/u,sin???v/u (x1,y1,z1,1)?(v,0,z1,1)?(0,0,u,1)0???0?? 0??1??
0???0?? 0??1??y O β z α (x1,y1,z1) x (v,0,z1)
通过上面可知,虽然三个变换矩阵不同,但是(x1,y1,z1,1)都变换成(0,0,u,1),所以效果是相同的。
习题17答案
习题17. 求完成如下空间图形变换的变换矩阵:
(1) 图形中点(0.5,0.2,-0.2)保持不动,x和y方向放大3倍,z方向不变。
(2) 产生与原点对称的图形。
(3) 产生对z?3平面对称的图形。
(4) 绕过原点和(1,1,1)的直线旋转45?。
(5) 绕过(0,0,1)和(-1,-1,-1)两点的直线旋转45?。 解答:
(1)变换矩阵如下:
T(?0.5,?0.2,0.2)?S(3,3,1)?T(0.5,0.2,?0.2)?1000??3000??1???0100????0300????0?0010??0010??0???0.5?0.20.21????0001????0.5?3000????0300???0010????1?0.401??
(2) 变换矩阵如下:
??1000??S(?1,?1,?1)??0?100???00?10? ??0001??
(3) 变换矩阵如下:
0010010.2?0.20?0??0? 1??