ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:238.46KB ,
资源ID:6496894      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6496894.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(#秋双学位计算机图形学07415#.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

#秋双学位计算机图形学07415#.docx

1、#秋双学位计算机图形学07415#2004年秋双学位计算机图形学 作业题目 教材 计算机图形学(第二版)第一次P105 3.17 利用中点算法并考虑对称性,推导在区间-10=x=10上,对下列曲线进行扫描转换的有效算法:y=(1/12)*x33.20 考虑对称性,建立中点算法对形式为y=ax2-b的任意抛物线进行扫描转换,参数a,b及x的范围从输入值获得。第二次P106 3.34 利用circle函数,编写一个程序,显示具有合适标记的饼图。程序的输入包括:在某些区间上给定数据分布的数据组,饼图的名称和区间的名称。每部分的标记将是显示在饼图边界外靠近对应饼图部分的地方。第三次10.7 P1394

2、.20 编写一个程序,使用指定的图案对给定的椭圆内部进行填充。 第四次10.14 P1685.12 确定对于任何直线y=mx+b的反射变换矩阵的形式。第四次10.22比较若干条相对于裁剪窗口的不同方向的线段的Cohen-Sutherland和梁友栋-Barsky裁剪算法的算术运算次数。第五次10.296.18 将梁友栋-Barsky算法改称多边形裁剪算法。第六次 11.48.13 设计一个程序,该程序允许用户使用一个笔画设备交互式地画图。第七次 11.1110.9 建立一个将给定的球、椭球或圆柱体变成多边形网格的一个算法。第八次 11.1810.20 给出d=5的均匀周期性B-样条曲线的混合函

3、数。第九次 11.2511.13 设计关于任选平面反射的例程。第十次12.8 编写一个将透视投影棱台变换到规则平行六面体的程序。上机1.实现Cohen-Sutherland多边形裁剪算法,要求显示多边形被每一条窗口边裁剪后的结果。2.编写一个程序,允许用户通过一个基本形状菜单并使用一个拾取设备,将每一个选取的形状拖曳到指定位置,并提供保存和载入的功能。3. 写一篇综述性的调研报告,要求不少于3000字,独立完成。内容可以是计算机图形学理论或算法的研究。如:曲线、曲面拟合算法;几何造型方法的研究。如:分形树、分形山、树木、花草、云、瀑布、粒子系统等等。或任何你感兴趣的领域。4.2004年秋双学位

4、计算机图形学 作业参考答案P105 3.17 利用中点算法并考虑对称性,推导在区间-10=x2时,dy/dx1;定义函数:f(x,y)=y-(1/12)*x3 决策参数pk1)当0x2(区域1)时, P1k = f(xk+1,yk+1/2),P1 k+1=f(x k+1+1,yk+1+1/2),xk 1= xk+1P1 k+1= P1k + (yk+1-yK)-(1/12)*(3*xk2+9*xk+7);2)当x2(区域2)时,P2k = f(xk+1/2,yk+1),P2 k+1=f(x k+1+1/2,yk+1+1), yk 1= yk+1P2 k+1= P2k + 1-(1/12)*(x

5、k+1+1/2)3-(xk+1/2)3;算法描述:1.初始点(0,0)2.计算区域1中的初始决策参数值p10 = f(1,1/2)=5/123.对区域1中,0x2,从k=0开始,完成下列测试:假如p1k2时,进入区域2, 使用区域1的最后点(2,2/3)计算区域2的决策参数值:p20=f(2+1/2, 2/3+1)完成下列测试:假如p2k0,则下一个点为(xk+1,yk+1)并且P2 k+1= P2k + 否则下一个点为(xk,yk+1)P2 k+1= P2k + 15.利用中心对称确定第三象限的点。6.重复区域1中的步骤直到x=2,重复区域2中步骤直到x=10。3.20 考虑对称性,建立中点

6、算法对形式为y=ax2-b的任意抛物线进行扫描转换,参数a,b及x的范围从输入值获得。解答:考虑y=ax2-b的任意曲线都可以由y=|a| x2通过翻转和平移得到,所以先计算y=|a| x2曲线。令|a|=A;dy/dx=2Ax,当0x1/(2A)时,dy/dx1;当x1/(2A)时,dy/dx1;定义函数:f(x,y)=y-Ax2决策参数pk1)当0x1/(2A)(区域1)时, P1k = f(xk+1,yk+1/2),P1 k+1=f(x k+1+1,yk+1+1/2),xk 1= xk+1P1 k+1= P1k + (yk+1-yK)-A*(2*xk+3);2)当x1/(2A)(区域2)

7、时,P2k = f(xk+1/2,yk+1),P2 k+1=f(x k+1+1/2,yk+1+1), yk 1= yk+1P2 k+1= P2k + 1 - A*(xk+1+1/2)2-(xk+1/2)2;算法描述:1.输入a,b和x范围xmin, xmax,令A=|a|。2.令MAX=max |xmin|, |xmax |, 在范围-MAX,MAX中作曲线3.初始点为(0,0),计算区域1中的初始决策参数值p10 = f(1,1/2)4.对区域1中,0x1/(2A),从k=0开始,完成下列测试:假如p1k1/(2A)时,进入区域2, 使用区域1的最后点(x0,y0)为初值计算区域2的决策参数

8、值初值:p20=f(x0+1/2, y0+1)完成下列测试:假如p1k0,则下一个点为(xk+1,yk+1)并且P2 k+1= P2k + 否则下一个点为(xk,yk+1)P2 k+1= P2k + 16.利用中心对称确定第二象限的点。7.如果MAX1/(2A),那么重复区域1中步骤,计算到x=MAX,无须计算区域2;否则重复计算区域1中步骤,直到x=1/(2A),进出区域2,重复计算区域2中步骤,直到x=MAX。8.截取xmin, xmax中的部分,如果a0,那么就将计算所得点(x,y)变换到(x,-y)。9.将上面所得曲线点(x,y)移到(x,y-b)P106 3.34 利用circle函

9、数,编写一个程序,显示具有合适标记的饼图。程序的输入包括:在某些区间上给定数据分布的数据组,饼图的名称和区间的名称。每部分的标记将是显示在饼图边界外靠近对应饼图部分的地方。解答:define TWO_PI 6.28Typedef structInt number; /数据组中元素的个数Char20 ChartName;Data_t* pdata; /指向数据组的指针pieChart_array;Typedef structFloat dataChar20 SecName;Data_t;Void pieChart(pieChart_array dataArray)wcPt2 pts2,cente

10、r;float radius = WINDOW_HEIGHT/4.0float newSlice, total=0.0, lastSlice=0.0;int counter;center.x=WINDOW_WIDTH/2;center_y=WINDOW_WIDTH/2;/画圆pCircle(center,radius);/求总数for(counter=0;counterdata;pts0.x=center.x;pts0.y=center.y;/求每个区间的数据和的大小并画线,标明区间名for(counter=0;counterdata/total+lastSlice;pts1.x=center

11、.x+radius*cosf(newSlice);pts1.y=center.y+radius*sinf(newSlice);pPolyline(2,pts);/设置文字的对齐方式if (newSliceTWO_PI*3/4)setTextAlignment(right,normal);elsesetTextAlignment(left,normal);text(pts1, (dataArray.pdatacounter)- SecName);lastSlice=newSlice;/画饼图名称pts0.x=center.x;pts0.y=center.y+ radius+4;text(pts0

12、, dataArray.ChartName);4.20 编写一个程序,使用指定的图案对给定的椭圆内部进行填充。参见 课本p119第四次10.14 P1685.12 确定对于任何直线y=mx+b的反射变换矩阵的形式。解答:假设直线与x轴的夹角为, tag = m直线y=mx+b的反射变换可以通过一下过程得到:a)在y方向上平移 b b)旋转 -c)对x轴做反射d)旋转 e)在y方向上平移 b整个过程如下式:也即是:化简得:又: ,即,所以:第六次10.22比较若干条相对于裁剪窗口的不同方向的线段的Cohen-Sutherland和梁友栋-Barsky裁剪算法的算术运算次数。参考 课本 p182第

13、七次10.296.18 将梁友栋-Barsky算法改称多边形裁剪算法。解题思路:使用一种多边形裁减算法,将其中边的裁减改为使用梁友栋-Barsky算法第六次 11.48.13 设计一个程序,该程序允许用户使用一个笔画设备交互式地画图。参考课本 p224第七次 11.1110.9 建立一个将给定的球、椭球或圆柱体变成多边形网格的一个算法。略第八次 11.1810.20 给出d=5的均匀周期性B-样条曲线的混合函数。公式在课本 p265第九次 11.2511.13 设计关于任选平面反射的例程。设计思路:1、对原来点做旋转变换,使反射平面与一个坐标平面重合;2、对变换后的反射平面作点的反射变换;3、

14、将反射点做反旋转变换,恢复到真正的反射点的位置。第十次12.8 编写一个将透视投影棱台变换到规则平行六面体的程序。参见课本 p355课上讨论:11.11 自然样条曲线。练习参考答案一、填空1假设投影中心为Pc(0,0,0),投影平面为z=2,三维空间中的点P(x,y,z)在投影平面上的透视投影为点Pp(xp,yp,2),则xp=(1),yp=(2)。 Xp=2x/zYp=2y/z2投影平面是XOY平面,投影方向是(a,b,c),其中,a、b、c都不为0,则平行投影变换矩阵是(3)。1 0 -a/c 0 0 1 -b/c 00 0 0 00 0 0 1或1 0 -a/c 0 1 -b/c 0 0

15、 0 3.椭圆的长轴是8,和x轴重合,短轴是6,和y轴重合,椭圆的中心在坐标原点。采用中点画椭圆的算法,在第一象限的椭圆轨迹上的所有的像素位置是(4)(5)(6)(7)(8)(9)(10)。(0,3),(1,3),(2,3),(3,2),(4,1),(4,0)争议:有同学指出第一象限内的点应该不包括坐标轴上的点。但考虑到本题出题的本意并不在此,所以将会同时认可这两个答案4. 在Cohen-Sutherland算法中,线段EF的两个端点的编码分别为0101和1001,线段EF的可见性为(11)。线段EF的两个端点的编码分别为1001和0110,线段EF的可见性为(12)。完全不可见既不完全可见,

16、也不完全不可见争议:经付峥同学提醒,第(12)空应该为不完全可见,也就是部分可见或完全不可见,如下图所示:5. 字符的表示方法有(13)和(14)两种方式。(15)表示字库的主要缺点是占用大量存储空间,(16)表示字库的主要缺点是表示字符的过程复杂。位图轮廓线(矢量)位图轮廓线(矢量)二、画出Weiler-Atherton算法的流程图,并写出图1的裁剪过程和结果,并用图示说明,并标注需要的记号。细线画的多边形是窗口,粗线画的是待裁剪的多边形图1算法思想规定待裁剪多边形和裁剪窗口的顶点都按照顺(逆)时针方向排列。待裁剪多边形的边与裁剪窗口的边界可能相交,也可能不相交。如果相交的话,交点必然成对出

17、现,即一个交点为多边形的边进入裁剪窗口时的交点,称为入点;另一个交点为多边形的边走出裁剪窗口时的交点,称为出点。沿着待裁剪多边形的边按照顺(逆)时针方向跟踪,直到遇到与窗口边界的交点为止;如果该交点为入点,那么继续沿着待裁剪多边形的边按照逆时针方向跟踪;如果该交点为出点,那么保存该交点供以后恢复跟踪时使用,并且在出点处沿着裁剪窗口的边界按照逆时针方向跟踪;重复上述过程,直到形成封闭的多边形;如果待裁剪多边形尚未完全遍历,那么就从前面保存的出点处恢复跟踪,继续沿着待裁剪多边形的边按照逆时针方向跟踪,直到待裁剪多边形完全遍历为止。裁剪结果图如下:三、由A(0,0,0)、B(1,0,0)、C(0,1

18、,0)、D(0,0,1)定义的棱锥绕轴L旋转45度,L的方向是(0,1,1),并且经过C(0,1,0),请求出旋转后A和B的新位置A和B。A=(1/2,(2-sqart(2)/4,(sqart(2)-2)/4)B=(1+sqart(2)/2,(4-sqart(2)/4,(sqart(2)-4)/4)四、请推导将三次参数曲线从Hermit表示转换为Bzier表示的转换矩阵。假设参数多项式曲线的一种表示的几何矩阵为G1、基矩阵为M1,与之等价的另一种表示的基矩阵为M2,要求出对应的几何矩阵G2。因为G1M1T=G2M2T 即G1M1=G2M2所以G2=G1M1M2-1=G1M12将参数多项式曲线的

19、一种表示的几何矩阵转换为另一种表示的几何矩阵的转换矩阵为M12=M1M2-1(1.9.4)从Hermit表示转换为Bzier表示的转换矩阵为MHB=MHMB-1MH1 0 -3 20 0 3 -20 1 -2 10 0 -1 1MB1 -3 3 -10 3 -6 30 0 3 -3 0 0 0 1或:Mgeomh为Hermit几何矩阵,MgeomB为Bezier几何矩阵。P(u)=U.MH.MgeomhP(u)=U.MB.MgeomBMB.MgeomB=MH.MgeomhMgeomB= MB-1。MH.MgeomhMH-B= MB-1。MHMB-1 3 -3 13 -6 3 0-3 3 0 0

20、1 0 0 0MH2 -2 1 1-3 3 -2 -10 0 1 01 0 0 0五、图示四叉树的结构,并写出实现两个用四叉树表示的二维物体的并集的算法。考虑计算物体S和T的并集U:自顶向下同步地访问表示S和T的四叉树。(1)如果S和T的对应节点中有一个为满节点(full),那么在U中加入一个满节点;(2)如果S和T的对应节点中有一个为空节点(empty),那么将与空节点对应的另一个节点加入U中;(3)如果S和T的对应节点都为部分满节点(partially full),那么在U中加入一个部分满节点,再递归地计算S和T中对应子树(各四棵)的并集,最后检查得到的四个子节点,若都为满节点,则删去这四个子节点,并将原来加入的部分满节点改为满节点。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1