Bezier曲线和样条曲线的生成算法

上传人:文*** 文档编号:47676463 上传时间:2021-12-25 格式:DOCX 页数:7 大小:16.17KB
收藏 版权申诉 举报 下载
Bezier曲线和样条曲线的生成算法_第1页
第1页 / 共7页
Bezier曲线和样条曲线的生成算法_第2页
第2页 / 共7页
Bezier曲线和样条曲线的生成算法_第3页
第3页 / 共7页
资源描述:

《Bezier曲线和样条曲线的生成算法》由会员分享,可在线阅读,更多相关《Bezier曲线和样条曲线的生成算法(7页珍藏版)》请在装配图网上搜索。

1、计算机图形学实验报告实验名称Bezier曲线和样条曲线的生成算法 评分实验日期 年一月一日指导教师姓名 专业班级 学号一、实验目的1、复习Bezier曲线和B样条曲线的参数表示法。2、编程实现用二次Bezier曲线绘制。3、编程实现用三次Bezier曲线绘制和分段光滑Bezier曲线图形的绘制。4、用三次B样条函数绘制曲线。二、实验要求1、编程实现在屏幕上绘制出两次Bezie曲线的几何图形和特征多边形图形,对于直线和曲线设置不同的线形和颜色。2、现在屏幕上绘制出三次Bezie曲线的几何图形和特征多边形图形,对于直线和曲线设置不同的线形和颜色。1、编程实现用分段三次Bezier曲线绘制光滑Bez

2、ier曲线图形。1、编程实现在屏幕上绘制出三次B样条函数绘制曲线。2、编程实现在屏幕上绘制出光滑连接的三次B样条曲线。三、关键算法及实现原理1、二次Bezier曲线的计算公式为:P(t)=(Po-2Pl + P2)t2+(-2Po+2Pl)t+Po2X(t)=(X 0-2X1+X 2) t2+(-2X o +2X i)t+X oY(t)=(Y 0-2Y1+Y 2) t2+(-2Y o +2Y i)t+Yo其中P。、Pi、P2为三个已知的点,坐标分别为(X。、丫。)、(Xi、丫 1)、(X1、Y2)。2、次Bezier曲线的计算公式为:P(t)=(-Po+3Pi-3P2+P3)t3+(3Po-6

3、Pi+3P2)t2+(-3Po+3Pi)t+PoX(t)= (-X o+3X 1-3X2+X3)t3+(3X o-6Xi+3X2)t2+(-3X o+3XJt+XoY(t)= (-Y o+3Yi-3Y2+Y3)t3+(3Yo-6Yi+3Y2)t2+(-3Y o+3Y i)t+Y o其中 P。、Pl、P2、P3 为四个已知的点,坐标分别为(Xo、Yo)、(Xi、Yl) (Xi、丫2)、(X3、Y3)。3、三次B样条函数绘制曲线的计算公式为:P(t)=(-Po+3Pi-3P2+3P3)t3+(3Po-6Pi+3P2)t2+(-3Po+3P2)t+(Po+4Pi+P2)/6X(t)=(-X o+3X

4、 1-3X 2+3X 3)t3+(3X 0-6X 1+3X 2)t 2+(-3X o+3X 2)t+(X o+4X 1+X 2)/6Y(t)=(-Y o+3Y 1-3Y 2+3Y 3)t3+(3Y 0-6Y 1+3Y 2)t 2+(-3Y o+3Y 2)t+(Y o+4Y 1+Y 2)/6其中 P。、Pl、P2、P3 为四个已知的点,坐标分别为(Xo、Yo)、(Xi、Yl) (Xi、丫2)、(X3、Y3)。4、三次B样条函数绘制曲线的光滑连接条件为:对于 N个顶点,取Pi、P2、P3、P4 4个顶 点绘制在第一段三次样条曲线,再取P2、P3、P4、P5 4个顶点绘制在第二段三次样条曲线,总计

5、可绘制n-3段光滑连接的三次样条曲线。5、程序设计方法根据Bezier曲线的定义,输入Bezier曲线的特征多边形(例如三次Bezier曲线输入四个型值 点),然后把t从。1分成n等分,按相应的Bezier曲线公式计算出Bezier曲线上的点,用绘直 线段的方法依次这些点连接起来,就得到Bezier曲线。如果要画多段Bezier曲线,可设置一些变 量存放Bezier曲线的条数,按条数依次绘制出来即可。四、程序调试中的问题1、注意选项中路径要改。2、在turboc2中加载displaytou头文件五、程序运行结果或数据1、绘制二次Bezier曲线的源程序#include display.hvoi

6、d Bezier_2(int color,double p32) double t,xt,yt;int rate=200,x,y;setcolor(color);moveto(p00,p01);for (t=O;t=1 ;t+=1.0/rate)xt=p00*yt*yt+p10*2*yt*t+p20*t*t;yt=p01 *yt*yt+p1 1*2*yt*t+p21x=(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;lnitia

7、lize();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=DE

8、TECT,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(IOOO);if(tzb=1)for(i=

9、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+1 0-3*pm+20+pm+30)*t*t*t+ (3*pm0-6*pm+1 0+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

10、)*t+(pm1 +4*pm+1 1 +pm+21);if(t=O) 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 coIori Jnt color2,int textcolor) (int x=getmaxx()/2,y=getmaxy()-20; moveto(x-1803y);s

11、etcolor(colorl);setlinestyle(0,0,3);lineto(x-155,y);setcolor(color2);moveto(x5y);lineto(x+25,y);setcolor(textcolor);settextstyle(0,0,1);outtextxy(x-803y,fl2 ci B_yangtiaoM);c、 E:turboc2TC.EXEFile Edit Run Compile Project Options Debug Break/watcF)Line 1E:3BEZIER.C 一 Edit 一七一一wCol 1 Insert Indent Tab

12、 Fill UnindentMinelude“graphicsh” ttinclude Mcon io.h0 ttincludevo id vo id uoid uoid int intD_yt_3 tulie intfr xuehaopri inti nainO gdriue r =DET EC; pL8H230.CompilingMain file: SEC0ND3BEZIER.CCompiling: EDITOR 3BEZ1ER.C530.370)X600.230 initgraphC&gdriue xuehaopri;tulie2,4,15; B_yt_3; getchO ; closegraphO ;Lines compiled:Warnings: Errors:11 09T 7 0 0Available nemoxv: 262KSuccessi y F700Press any hep H2 lint co lot*, int tzbWatchFl-p F5-Zoor F6-1i F7-Trace F8-Step F,一e F10-MenuNUM六、实验收获及体会1、了解Bezier曲线和B样条曲线的参数表示法。2、用三次Bezier曲线绘制和分段光滑Bezier曲线图形的绘制。3、了解二次bezier曲线和三次bezier曲线的算法。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!