计算机图形学的课程设计.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形学的课程设计

计算机图形学课程设计 设计题目:画三次Bezier曲线和三次B样条曲线 班级: 姓名: 学号: 一、总体目标和要求 1 课程设计目的 本课程主要内容包括计算机图形学的研究内容、发展与应用,图形输入输出设备,图形显示原理,图形软件标准,基本图形生成算法,图形几何变换与裁剪,自由曲线和曲面,三维实体造型,分形几何造型,分形艺术,隐藏面消除,光照模型,颜色模型,光线跟踪,纹理细节模拟,常用的计算机动画技术和软件等。 通过本,使自己了解计算机图形学的有关原理、算法及系统,掌握基本图形显示程序设计方法,及二维和三维图形变换程序设计方法,为进一步学习计算机辅助设计方面的技术知识打下基础。根据 Q(t)=∑Pi?Bi,n(t) = ∑Pi? C in ti(1-t)n-i (∑中的n=3) 并且 C in =C(n,k)= C(n,k-1) BEZ 0,3 (u)=(1-u)(1-u)(1-u) BEZ 1,3(u)=3u(1-u)(1-u) BEZ2,3(u)=3uu(1-u) BEZ3,3(u)=3uuu 三次Bezier函数可以写成 P(u)=[ u3 u2 u 1]×M×[a b c d] 其中M=[ -1 3 -3 1 ] 3 -6 -3 0 -3 3 0 0 1 0 0 0 (2)画三次B样条曲线 Qi,3(t)=∑Pi+l Fl,3(t)= Pi F0,3(t)+ Pi+1 F1,3(t)+ Pi+2 F2,3(t)+ Pi+ 3 F3,3(t) (其中∑中的n=3)因为四个调和函数F0,3(t)、F1,3(t)、F2,3(t)和F3,3(t) 已知(参看公式7-5-3)因此只要给出四个控制点的位置矢量的坐标,当t在[0,1]范围内取离散地取100个点时(dt=0.01),分别求出每一个曲线上点,相邻点用直线段连接起来,就可以得到相应的B样条曲线。 设控制点的个数为PointNum,要求PointNum≥4,则可以生成(PointNum-3)段三次B样条曲线。其中第i段三次B样条曲线的代数形式为: Qi,3(t)x= Pi x F0,3(t)+ P (i+1) x F1,3(t)+ P (i+2) x F2,3(t)+ P (i+3) x F3,3(t) Qi,3(t)y= Pi y F0,3(t)+ P (i+1) y F1,3(t)+ P (i+2) y F2,3(t)+ P (i+3) y F3,3(t) 其中,i=1,2,…, PointNum-3 四、程序源代码 (1)画三次Bezier曲线的程序源代码如下: void __fastcall TForm1::N1Click(TObject *Sender) { float a[4][2]={100,100,200,250,300,130,400,250}; double t,t1,t2,t3,t4,t5,dt; int x,y,i,m=20; String str; Image1-Canvas-TextOutA(180,50,三次Bezier曲线); dt = 1.0/(m+1); for(i=0; i=m; i++) { t = i*dt; t1 = t*t; t2 = t1*t; t3 = (1-t); t4 = t3*t3; t5 = t4*t3; x = t5*a[0][0]+3*t*t4*a[1][0]+3*t1*t3*a[2][0]+t2*a[3][0]; y = t5*a[0][1]+3*t*t4*a[1][1]+3*t1*t3*a[2][1]+t2*a[3][1]; if(i==0) Image1-Canvas-MoveTo(x,y); else Image1-Canvas-LineTo(x,y); } // 绘制坐标点连成的折线 Image1-Canvas-Pen-Color=clBlue; for(i=0;i4;i++) { str = IntToStr(i); Image1-Canvas-Brush-Color=RGB(255,250,0); Image1-Canvas-Brush-Style=0; if(i==0) Image1-Canvas-MoveTo(a[i][0],a[i][1]);

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档