计算机图形学计算题目1415(参考答案)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

题目中所有的坐标系,均以OpenGL坐标系为准1.使用OpenGL图形库渲染如下四棱截锥体图形,根据给定点的A、C、G的坐标推算出其余五个点B、D、E、F、H的坐标答:B(1.0f,-1.0f,0.0f)D(-1.0f,-1.0f,-2.0f)E(-0.5f,1.0f,-0.5f)F(-0.5f,1.0f,-1.5f)H(0.5f,1.0f,-0.5f)每个坐标2分2.已知在平面P上有两条向量v1和v2他们的值分别(2.0f,0.0f,0.0f),(0.0f,3.0f,0.0f)求出垂直与平面P的法向量v3的值为多少,求出v1与v2之间的夹角θ的度数或cos值为多少?要求写出计算过程。向量的模222||zyxV向量的倍乘),,(azayaxaV向量之和),,(21212121zzyyxxVV向量的点积21212121zzyyxxVV向量的叉积),,(21122112211221yxyxxzxzzyzyVV答:v3=v1与v2叉积或v1×v2v3=(y1z2–y2z1,z1x2–x2z1,x1y2–x2y1)v3=(0.0f,0.0f,6.0f)(3分其中公式2分值1分)转换单位向量v3=(0.0f,0.0f,1.0f)(1分)cosθ=|v1|与|v2|的点积或|v1|·|v2||v1|=(1.0f,0.0f,0.0f)(1分)|v2|=(0.0f,1.0f,0.0f)(1分)cosθ=x1x2+y1y2+z1z2;cosθ=1.0f*0.0f+0.0f*1.0f+0.0f*0.0f;cosθ=0θ=90°(4分其中公式2分值2分)3.已知空间中一条线段的两个顶点为d1(5.0f,3.0f,-2.0f)d2(6.0f,4.0f,-2.0f)计算出其绕(y=3,z=0)的轴旋转90°后再缩小0.5倍后的新的线段的两个顶点坐标,要求写出每一个计算后得到的新矩阵。平移矩阵=1000100010001zyxttt缩放矩阵=1000000000000zyxsss旋转矩阵绕x轴=10000cossin00sincos00001绕y轴=10000cos0sin00100sin0cos绕z轴=1000010000cossin00sincos答:缩小0.5矩阵A=100000.500000.500000.5沿Y轴平移3矩阵B=1000010030100001绕X旋转90度矩阵C=1000001001000001沿Y轴平移-3矩阵D=1000010030100001上面每个矩阵1分AxB=100005.0005.105.000005.0AxBxC=1000005.005.15.0000005.0M=AxBxCxD=10005.105.005.15.0000005.0(乘的顺序正确2分,结果正确2分)d1转换后=Mxd1=(2.5f,2.5f,0.0f)d2转换后=Mxd2=(3.0f,2.5f,0.5f)(公式正确1分,结果正确1分)4.分别使用数值微分法(DDA算法)、中点画线法和Bresenham算法计算出P0(1,1)和P1(3,6)之间扫描过的点。中点画线法addbaddbad*20)(*20*2Bresenham算法xyxdeedede*2,0*2,再减少如果答:数值微分法(DDA算法)斜率5.21316-0101xxyyk由于斜率大于1增量4.011kxy,(2分)yint(x+0.5)x+0.5111211.4+0.5321.8+0.5422.2+0.5532.6+0.5633.0+0.5(标题正确2分,下面每行1分)中点画线法斜率5.21316-0101xxyyk由于斜率大于10110,yybxxa(2分)yxdd1112*a21-32*(a+b)3232*a42-12*(a+b)5352*a631(标题没分,写公式占4分错1个扣1分,错1个值扣1分最多扣4分;没写公式错1个值扣1分扣满8分)Bresenham算法斜率5.21316-0101xxyyk由于斜率大于10101,xxdyydyx(2分)yxee11-1yd*2213xydd*2*232-3yd*2421xydd*2*253-5yd*263-1(标题没分,写公式占4分错1个扣1分,错1个值扣1分最多扣4分;没写公式错1个值扣1分扣满8分)5.使用中点画圆算法计算出以点(4,6)为圆心,半径为8的圆的1/8圆弧点坐标。中点画圆法5)(203201yxddxddrd答:xyddx+4y+608-72x+341418-42x+35142812(x-y)+561437-62x+37134732(x-y)+5813562912(标题没分,写公式占5分错1个扣1分,错1个值扣1分最多扣5分;没写公式错1个值扣1分扣满10分)6.使用Bresenham椭圆算法计算出以点(3,5)为圆心,半径a=7,b=4的椭圆的1/4圆弧点的坐标。2222ababee0时)23()32(0)32(0)12(22222yaxbedxbedyaede=0时)23(0)23()32(0)12(22222yaedyaxbedxbed答:xyedex+3y+504-327-311)32(2xb3914-279-215)32(2xb4924-199-55)32(2xb5934-87169)23()32(22yaxb6943-188-131)32(2xb7853-12221)23()32(22yaxb886249-110)23()32(22yaxb9771240240)23(2ya10670289338105(标题没分,写公式占5分错1个扣1分,错1个值扣1分最多扣5分;没写公式错1个值扣1分扣满10分)7.已知如下多边形,使用扫描线算法求出该多边形的活化边表。(结果保存小数点后1位)扫描线:Y=1:5.00.2316PP-2.00.4654PPY=2:5.05.2316PP-2.02.4654PPY=3:7.00.3621PP-2.04.4654PPY=4:7.03.2621PP-5.10.2632PP-5.10.2643PP-2.06.4654PPY=5:7.07.1621PP-5.15.0632PP-5.15.3643PP-2.08.4654PP错一个节点扣1分,顺序写错每个节点扣0.5分,扫描线顺序也可以从5-18.已知种子填充四连通递归算法函数如下:voidfloodfill4(intx,inty,CColoroldColor,CColornewColor){CClientDCdc(this);if(dc.GetPixel()==oldColor){dc.SetPixel(x,y,newColor);floodfill4(x-1,y,oldColor,newColor);floodfill4(x+1,y,oldColor,newColor);floodfill4(x,y+1,oldColor,newColor);floodfill4(x,y-1,oldColor,newColor);}}根据以上函数写出以下图形区域填充算法的过程:为边界,为起始点102101777879808199100767584838298979674738586345672718721872170691110920191868121314151617672423226625262765302928643132336263363534616059373839555657584241405453525143444546474849509594939291908988每10个序号1分,中间一个点序号写错后面所有序号都不得分9.已知直线段的两点(-200,-100)和(700,600)分别使用Cohen-Sutherland和梁友栋-BarSky算法计算对于区域(0,0,500,600)裁剪后的直线段,要求写出计算过程。Cohen-Sutherland算法给定公式:左交点:111212)(,yxWxxyyyWxxlxl右交点:111212)(,yxWxxyyyWxxrxr下交点:111212)(,xyWyyxxxWyybyb上交点:111212)(,xyWyyxxxWyytyt答:裁剪顺序为上下右左,区域编码如下:(2分)令x1=-200y1=-100x2=700y2=600(x1,y1)点的code1=0101(x2,y2)点的code2=0010(1分)∵(code1!=0||code2!=0)&&code1&code2==0∴进行裁剪上边code1&1000=0不裁剪cdoe2&1000=0不裁剪(1分)下边code1&0100!=0进行裁剪111212)(,xyWyyxxxWyybyby1=0,x1=)200())100(0()100(600)200(700≈-71(x1,y1)点的code1=0001code2&0100=0不裁剪(2分)右边code1&0010=0不裁剪code2&0010!=0进行裁剪111212)(,yxWxxyyyWxxrxrx2=500,y2=)100())200(500()200(700)100(600≈444(x2,y2)点的code2=0000(2分)左边code1&0001!=0进行裁剪111212)(,yxWxxyyyWxxlxlx1=0,y2=)100())200(0()200(700)100(600≈56(x1,y1)点的code1=0000(2分)裁剪后的线段为(0,56)(500,444)100110000001010100000100101000100110梁友栋-BarSky算法给定公式:121121yyyYTyuyYBxxxXRxuxXLXLxqxp111,122,xXRqxpYByqyp133,144,yYTqyp答:令x1=-200y1=-100x2=700y2=600u1=0,u2=1(1分)p1=-900q1=-200u=2/9∵p10uu1成立∴u1=2/9u2=1(2分)p2=900q2=700u=7/9∵p20uu2成立∴u1=2/9u2=7/9(2分)p3=-700q3=-100u=1/9∵p30uu1不成立∴u1=2/9u2=7/9(2分)p4=700q4=700u=1∵p40uu2不成立∴u1=2/9u2=7/9(2分)裁剪后的点为(x1+u1(x2-x1),y1+u1(y2-y1))≈(0,56)(x1+u2(x2-x1),y1+u2(y2-y1))≈(500,444)(1分)10.已知如下多边形进行区域裁剪,若安装p1-p6顺序遍历多边形的各条边,按顺序写出该多边形裁剪的处理线段及保留的顶点。答:处理线段P1P2输出AB(1分)处理线段P2P3输出CP3(1分)处理线段P3P4输出D(2分)处理线段P4P5输出EP5(1分)处理线段P5P6输出F(2分)处理线段P6P7输出GP7(1分)处理线段P7P1输出H(2分)11.已知空间中一

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功