Bezier曲线和样条曲线的生成算法_第1页
Bezier曲线和样条曲线的生成算法_第2页
Bezier曲线和样条曲线的生成算法_第3页
Bezier曲线和样条曲线的生成算法_第4页
Bezier曲线和样条曲线的生成算法_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机图形学实验报告实验名称 Bezier曲线和样条曲线的生成算法 评分 实验日期 年 月 日 指导教师 姓名 专业班级 学号 一、 实验目的1、 复习Bezier曲线和B样条曲线的参数表示法。2、 编程实现用二次Bezier曲线绘制。3、 编程实现用三次Bezier曲线绘制和分段光滑Bezier曲线图形的绘制。4、 用三次B样条函数绘制曲线。二、 实验要求1、编程实现在屏幕上绘制出两次Bezie曲线的几何图形和特征多边形图形,对于直线和曲线设置不同的线形和颜色。2、现在屏幕上绘制出三次Bezie曲线的几何图形和特征多边形图形,对于直线和曲线设置不同的线形和颜色。1、编程实现用分段三次Bezier曲线绘制光滑Bezier曲线图形。1、 编程实现在屏幕上绘制出三次B样条函数绘制曲线。2、 编程实现在屏幕上绘制出光滑连接的三次B样条曲线。三、 关键算法及实现原理1、二次Bezier曲线的计算公式为:P(t)=(P0-2P1+P2)t2+(-2P0+2P1)t+P0X(t)=(X0-2X1+X2)t2+(-2X0+2X1)t+X0Y(t)=(Y0-2Y1+Y2)t2+(-2Y0+2Y1)t+Y0其中P0、P1、P2为三个已知的点,坐标分别为(X0、Y0)、(X1、Y1)、(X1、Y2)。2、 次Bezier曲线的计算公式为:P(t)=(-P0+3P1-3P2+P3)t3+(3P0-6P1+3P2)t2+(-3P0+3P1)t+P0X(t)= (-X0+3X1-3X2+X3)t3+(3X0-6X1+3X2)t2+(-3X0+3X1)t+X0Y(t)= (-Y0+3Y1-3Y2+Y3)t3+(3Y0-6Y1+3Y2)t2+(-3Y0+3Y1)t+Y0其中P0、P1、P2、P3为四个已知的点,坐标分别为(X0、Y0)、(X1、Y1)、(X1、Y2) 、(X3、Y3)。3、三次B样条函数绘制曲线的计算公式为:P(t)=(-P0+3P1-3P2+3P3)t3+(3P0-6P1+3P2)t2+(-3P0+3P2)t+(P0+4P1+P2)/6X(t)=(-X0+3X1-3X2+3X3)t3+(3X0-6X1+3X2)t2+(-3X0+3X2)t+(X0+4X1+X2)/6Y(t)=(-Y0+3Y1-3Y2+3Y3)t3+(3Y0-6Y1+3Y2)t2+(-3Y0+3Y2)t+(Y0+4Y1+Y2)/6其中P0、P1、P2、P3为四个已知的点,坐标分别为(X0、Y0)、(X1、Y1)、(X1、Y2) 、(X3、Y3)。4、三次B样条函数绘制曲线的光滑连接条件为:对于N个顶点,取P1、P2、P3、P4 4个顶点绘制在第一段三次样条曲线,再取P2、P3、P4 、P5 4个顶点绘制在第二段三次样条曲线,总计可绘制n-3段光滑连接的三次样条曲线。5、程序设计方法根据Bezier曲线的定义,输入Bezier曲线的特征多边形(例如三次Bezier曲线输入四个型值点),然后把t从01分成n等分,按相应的Bezier曲线公式计算出Bezier曲线上的点,用绘直线段的方法依次这些点连接起来,就得到Bezier曲线。如果要画多段Bezier曲线,可设置一些变量存放Bezier曲线的条数,按条数依次绘制出来即可。四、程序调试中的问题1、注意选项中路径要改。2、在turboc2中加载displaytou头文件五、程序运行结果或数据1、绘制二次 Bezier 曲线的源程序#include display.hvoid Bezier_2(int color,double p32) double t,xt,yt; int rate=200,x,y; setcolor(color); moveto(p00,p01); for (t=0;t=1;t+=1.0/rate) yt=1-t; xt=p00*yt*yt+p10*2*yt*t+p20*t*t; yt=p01*yt*yt+p11*2*yt*t+p21*t*t; x=(int)(xt); y=(int)(yt); lineto(x,y); void main(void) static double p32=50,400,340,20,635,420; const N0=3; int i; Initialize(); setcolor(WHITE); moveto(p00,p01); for (i=1;iN0;i+) lineto(pi0,pi1); Bezier_2(LIGHTRED,p); while (getch()!=ESC); closegraph(); 2、实现光滑连接的三次 B-样条曲线源程序#includegraphics.h#includeconio.h#includevoid B_yt_3(int 2,int color,int tzb);void tulie(int,int,int);void xuehaopri(int color);void main()int gdriver=DETECT,gmode; int p82=30,350,90,110,250,260,390,90,490,110,530,370,600,230,550,110; initgraph(&gdriver,&gmode,D:tcbgi );xuehaopri(14); tulie(2,4,15); B_yt_3(p,4,0); getch(); closegraph();void B_yt_3(int p2,int color,int tzb)float t=0;int xt,yt,i,m;setlinestyle(0,0,1);setcolor(15);delay(1000);if(tzb=1)for(i=0;i7;i+)line(pi0,pi1,pi+10,pi+11);setcolor(color);for(m=0;m5;m+)for(t=0;t=1.0;t+=0.01) xt=1.0/6*(-pm0+3*pm+10-3*pm+20+pm+30)*t*t*t+ (3*pm0-6*pm+10+3*pm+20)*t*t+ (-3*pm0+3*pm+20)*t+(pm0+4*pm+10+pm+20); yt=1.0/6*(-pm1+3*pm+11-3*pm+21+pm+31)*t*t*t+ (3*pm1-6*pm+11+3*pm+21)*t*t+ (-3*pm1+3*pm+21)*t+(pm1+4*pm+11+pm+21); if(t=0) moveto(xt,yt); lineto(xt,yt); delay(15);void xuehaopri(int color)setcolor(color);settextstyle(1,0,3);settextjustify(1,1);outtextxy(getmaxx()/2,15,Made By No. 010XXX);void tulie(int color1,int color2,int textcolor)int x=getmaxx()/2,y=getmaxy()-20;moveto(x-180,y);setcolor(color1);setlinestyle(0,0,3);lineto(x-155,y);setcolor(color2);moveto(x,y);lineto(x+25,y);setcolor(tex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论