《计算机图形学第6章习题.ppt》由会员分享,可在线阅读,更多相关《计算机图形学第6章习题.ppt(22页珍藏版)》请在优知文库上搜索。
1、计算机图形学基础习题习题6.2/P182o6.2 6.2 已知二维变换矩阵已知二维变换矩阵T T2D2D=a b pa b p c d q c d q l m s l m s试说明矩阵试说明矩阵T T2D2D中各元素在变换中的具体作用。中各元素在变换中的具体作用。答:缩放:答:缩放:a,da,d 平移:平移:l,ml,m 旋转:旋转:a,b,c,da,b,c,d 透视:透视:p,qp,q 全局缩放:全局缩放:s s 错切:错切:b,cb,c习题习题6.3/P182o6.3 6.3 试推导将二维平面上任意直线段试推导将二维平面上任意直线段p p1 1(x(x1 1,y,y1 1)p)p2 2(x
2、(x2 2,y,y2 2)转换成为与转换成为与x x轴重合的变换矩阵(直线段轴重合的变换矩阵(直线段p1p2p1p2与与x x轴的交角轴的交角4545)。)。答:答:sin()=(ysin()=(y2 2-y-y1 1)/sqrt(x)/sqrt(x2 2-x-x1 1)2 2+(y+(y2 2-y-y1 1)2 2)cos()=(x cos()=(x2 2-x-x1 1)/sqrt(x)/sqrt(x2 2-x-x1 1)2 2+(y+(y2 2-y-y1 1)2 2)平移平移T T1 1(-x(-x1 1,-y,-y1 1)=1 0 0)=1 0 0 0 1 0 0 1 0 -x -x1
3、1 -y -y1 1 1 1旋转旋转R R1 1(-)=cos-sin 0(-)=cos-sin 0 sin cos 0 sin cos 0 0 0 1 0 0 1T=TT=T1 1(-x(-x1 1,-y,-y1 1)R)R1 1(-)(-)(x1,y1)(x2,y2)习题习题6.4/P182o6.4 6.4 已知点已知点P(xP(xp p,y,yp p)及其直线及其直线L L的方程的方程Ax+By+C=0Ax+By+C=0,试推导一个相对试推导一个相对L L作对称变换的变换矩阵作对称变换的变换矩阵T T,使点,使点P P的的对称点对称点PP满足满足P=PTP=PT。答:设:答:设:k=-A
4、/Bk=-A/B,b=-C/Bb=-C/B sin()=-A/sqrt(A sin()=-A/sqrt(A2 2+B+B2 2)cos()=-B/sqrt(Acos()=-B/sqrt(A2 2+B+B2 2)平移平移T T1 1(0,-b)=1 0 0(0,-b)=1 0 0 0 1 0 0 1 0 0 -b 1 0 -b 1(0,-C/B)(-C/A,0)习题习题6.4/P182旋转旋转R R1 1(-)=cos-sin 0(-)=cos-sin 0 sin cos 0 sin cos 00 0 10 0 1关于关于x x轴对称轴对称RFRFx x=1 0 0=1 0 0 0 -1 0 0
5、 -1 0 0 0 1 0 0 1反旋转反旋转R R2 2()=cos sin 0()=cos sin 0 -sin cos 0 -sin cos 0 0 0 1 0 0 1(0,-C/B)(-C/A,0)习题习题6.4/P182反平移反平移T T2 2(0,b)=1 0 0(0,b)=1 0 0 0 1 0 0 1 0 0 b 1 0 b 1T=TT=T1 1(0,-b)R(0,-b)R1 1(-)RF(-)RFx xR R2 2()T()T2 2(0,b)(0,b)习题习题6.6/P183o6.6 6.6 试证明相对于原点的旋转变换可以等价为一试证明相对于原点的旋转变换可以等价为一个比例变
6、换和一个错切变换的复合变换。个比例变换和一个错切变换的复合变换。cos sin 0 scos sin 0 sx x 0 0 1 b 0 s 0 0 1 b 0 sx x bs bsx x 0 0-sin cos 0 =0 s-sin cos 0 =0 sy y 0 0 c 1 0 =cs c 1 0 =csy y s sy y 0 0 0 0 1 0 0 10 0 1 0 0 1 0 0 1 0 0 1 0 0 10 0 1s sx x=cos=cos,s sy y=sin=sin,bs bsx x=sin=sin,cs csy y=-sin=-sinb=sin/cos=tg b=sin/co
7、s=tg,c=-sin/cos=-tg c=-sin/cos=-tg cos sin 0 cos 0 0 1 tg 0 cos sin 0 cos 0 0 1 tg 0 -sin cos 0 =0 sin 0 -sin cos 0 =0 sin 0 -tg 1 0 -tg 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 习题习题6.7/P183o6.7 6.7 如图所示四边形如图所示四边形ABCDABCD,求绕点,求绕点P(5,4)P(5,4)分别旋转分别旋转4545和和9090的变换矩阵,并求出各端点的坐标,画出的变换矩阵,并求出各端点的坐标,画出变换后的图形
8、。变换后的图形。9090T=0 1 0T=0 1 0 -1 0 0 -1 0 0 9-1 1 9-1 14 1 1 0 1 0 8 3 14 1 1 0 1 0 8 3 17 3 1 -1 0 0=6 67 3 1 -1 0 0=6 6 1 17 7 1 9-1 17 7 1 9-1 1 2 6 1 2 6 11 4 11 4 1 5 0 15 0 1A(8,3),B(6,6),C(2,6),D(5,0)A(8,3),B(6,6),C(2,6),D(5,0)A(4,1)B(7,3)C(7,7)D(1,4)A(8,3)B(6,6)C(2,6)D(5,0)4545T=T(-5,-4)R(45T=T
9、(-5,-4)R(45)T(5,4)T(5,4)=2/22/2 2/22/2 0 0 -2/22/2 2/22/2 0 0 5-5-2/2 4-2/22/2 4-2/2 1 14 1 1 5+4 1 1 5+22 4-2 4-22 2 1 17 3 1 T=5+37 3 1 T=5+32/22/2 4+4+2/2 2/2 1 1 7 7 1 7 7 1 5-5-2/22/2 4+5 4+52/2 2/2 1 1 1 4 11 4 1 5-2 5-222 4-2 4-22 2 1 1四舍五入后:A(6,1),B(7,5),C(4,8),D(2,1)A(4,1)B(7,3)C(7,7)D(1,4)
10、A(6,1)B(7,5)C(4,8)D(2,1)习题习题6.11/P183o6.11 试用编码裁剪法(试用编码裁剪法(Cohen-Sutherland)裁剪图裁剪图6-40的线段。的线段。2 31A(3,3)B(-1,-2)图6-40codeA=1010,codeB=0101k=5/4,b=-3/4,y=kx+bcodeA|codeB0 不在窗口内codeA&codeB=0 AB不在窗口同一外侧根据codeA的从低到高寻找编码位为1所对应的窗口边界为右边界。求AB与右边界的交点为PR(2,7/4)。令PR-A(2,7/4),codeA=0000,并用A代替APR交换,使得A-B(2,7/4)、
11、0000;B-A(-1,-2)、0101根据codeA的从低到高寻找编码位为1所对应的窗口边界为左边界,求AB与左边界的交点PL(0,-3/4)。令PL-A(0,-3/4),codeA=0100,并用A代替A根据codeA的从低到高寻找编码位为1所对应的窗口边界为底边界,求AB与底边界的交点PB(3/5,0)。令PB-A(3/5,0),codeA=0000,并用A代替A2 31A(-1,-2)B(2,7/4)PL2 31A(3/5,0)B(2,7/4)2 31A(0,-3/4)B(2,7/4)PB至此,裁剪结束,求得裁剪线段为:(2,7/4),(3/5,0)四舍五入后,裁剪线段为:(2,2),
12、(1,0)习题习题6.13/P183o6.13 试用中点分隔算法裁剪如图试用中点分隔算法裁剪如图6-40的线段,的线段,分隔一直到误差小于分隔一直到误差小于0.5为止。为止。codeA=1010,codeB=0101中点Pm(x1+x2)/2,(y1+y2)/2)求求A的最远可见点的最远可见点codeB0 B不在窗口内codeA&codeB=0 AB不在窗口同一外侧用二分法求AB中点Pm(1,1/2)、0000。Pm在窗口内,令Pm-A(1,1/2)、0000,并用A代替A2 31A(3,3)B(-1,-2)图6-40Pm用二分法求AB中点Pm(0,-3/4)、0100。Pm在窗口外,code
13、Pm&codeB0 PmB在窗口同一外侧,令Pm-B(0,-3/4)、0100,并用B代替B用二分法求AB中点Pm(1/2,-1/8)、0100。同理,令Pm-B(1/2,-1/8)、0100,并用B代替B用二分法求AB中点Pm(3/4,3/16)、0100。分析Pm和B的误差小于0.5,则不再分隔。四舍五入得B(1,0)、0000,为A的最远可见点。Pm2 31A(1,1/2)B(-1,-2)APm2 31A(1,1/2)BAB(0,-3/4)PmA(1,1/2)BAB(1/2,-1/8)BAB(1,0)codeA=1010,codeB=0101中点Pm(x1+x2)/2,(y1+y2)/2
14、)求求B的最远可见点的最远可见点codeA0 A不在窗口内codeA&codeB=0 AB不在窗口同一外侧用二分法求AB中点Pm(1,1/2)、0000。Pm在窗口内,令Pm-B(1,1/2)、0000,并用B代替B2 31A(3,3)B(-1,-2)图6-40Pm用二分法求AB中点Pm(2,7/4)、0000。Pm在窗口内,令Pm-B(2,7/4)、0000,并用B代替B2 31A(3,3)B(1,1/2)Pm用二分法求AB中点Pm(5/2,19/8)、1010。Pm在窗口外,codePm&codeA0 PmA在窗口同一外侧,令Pm-A(5/2,19/8)、1010,并用A代替A2 31A(
15、3,3)B(2,7/4)Pm2 31A(5/2,19/8)B(2,7/4)Pm用二分法求AB中点Pm(9/4,33/16)、1010。分析Pm和A的误差小于0.5,则不再分隔。四舍五入得A(2,2)、0000,为B的最远可见点。至此,裁剪结束,求得裁剪线段为:(2,2),(1,0)习题习题6.14/P183o6.14 试用试用Liang-Barsky算法裁剪如图算法裁剪如图6-40的线段。的线段。P1=-(-x2-x1)=-(-1-3)=4;q1=x1-xWL=3-0=3;P2=x2-x1=-1-3=-4;q2=xWR-x1=2-3=-1;P3=-(-y2-y1)=-(-2-3)=5;q3=y
16、1-yWB=3-0=3;P4=y2-y1=-2-3=-5;q4=yWT-y1=2-3=-1;Pi0 不存在直线与窗口边界的平行2 31A(3,3)B(-1,-2)图6-40Pm12341/51/5P P4 40,0,0,出去出去3:3:下下1/41/4P P2 20,0,0,出去出去1:1:左左U(=qU(=qi i/p/pi i)ABAB边界边界U Umaxmax U Uminmin有交有交UmaxUminUmin=min(1,u1,u3)=3/5 Umax=max(0,u2,u4)=1/4 UmaxUmin 有交有交 X=x1+Umax(x2-x1)=3+1/4(-1-3)=2 Y=y1+Umax(y2-y1)=3+1/4(-2-3)=1.75 X=x1+Umin(x2-x1)=3+3/5(-1-3)=0.6 Y=y1+Umin(y2-y1)=3+3/5(-2-3)=0得交点得交点(2,1.75)(2,1.75)、(0.6,0)(0.6,0)至此,四舍五入后,求得裁剪线段为:(2,2),(1,0)2 31A(3,3)B(-1,-2)Pm12341/51/5P P4 40,0,0,出