实验报告四bezier曲线.docx

实验报告四bezier曲线.docx

ID:58663246

大小:37.13 KB

页数:4页

时间:2020-10-15

实验报告四bezier曲线.docx_第1页
实验报告四bezier曲线.docx_第2页
实验报告四bezier曲线.docx_第3页
实验报告四bezier曲线.docx_第4页
资源描述:

《实验报告四bezier曲线.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验四Bezier曲线的绘制1.实验目的练习Bezier曲线的绘制和deCasteljau算法。2.实验内容和要求按要求完成如下一个作业,提交纸质实验报告,同时提交实验报告和代码的电子版。实现Bezier曲线的deCasteljau递推算法,能够对任意介于0和1之间的参数t计算Bezier曲线上的点,然后依次连接这些点生成Bezier曲线。要求:对[0,1]参数区间进行100等分。控制点的数目至少为5个,即Bezier曲线的次数不低于4次。deCasteljau算法用一个函数单独实现。绘制Bezier曲线的同时还要绘制其控制多边形。至少绘制两条Bezier曲线,具有不同的次数,颜色

2、和曲线宽度。3.算法描述BezierCurve(贝塞尔曲线)是应用于二维图形应用程序的数学曲线。曲线定义:起始点、终止点、控制点。通过调整控制点,贝塞尔曲线的形状会发生变化。1962年,法国数学家PierreBezier第一个研究了这种矢量绘制曲线的方法,并给出了详细的计算公式,因此按照这样的公式绘制出来的曲线就用他的姓氏来命名,称为贝塞尔曲线。以下公式中:B(t)为t时间下点的坐标;P0为起点,Pn为终点,Pi为控制点。一阶贝塞尔曲线如下,意义由P0至P1的连续点,描述的是一条线段:二阶贝塞尔曲线(抛物线:P1-P0为曲线在P0处的切线):原理:由P0至P1的连续点Q0,描述一条

3、线段。      由P1至P2的连续点Q1,描述一条线段。      由Q0至Q1的连续点B(t),描述一条二次贝塞尔曲线。4.源程序代码#include#include#includeGLsizeiwinWidth=600,winHeight=600;GLfloatxwcMin=-150.0,xwcMax=150.0;GLfloatywcMin=-300.0,ywcMax=300.0;classwcPt3D{public:GLfloatx,y,z;};voidinit(){glClearColor(1

4、.0,1.0,1.0,1.0);}voidplotPoint(wcPt3DbezCurevePt){glBegin(GL_POINTS);glVertex2f(bezCurevePt.x,bezCurevePt.y);glEnd();}voidbinomiaCoeffs(GLintn,GLint*C){GLintk,j;for(k=0;k<=n;k++)C[k]=1;for(j=n;j>=k+1;j--)C[k]*=j;for(j=n-k;j>=2;j--)C[k]/=j;}voidcomputeBezPt(GLfloatu,wcPt3D*bezPt,GLintnCtrlPts,w

5、cPt3D*CtrlPts,GLint*C){GLintk,n=nCtrlPts-1;GLfloatbezBlendFcn;bezPt->x=bezPt->y=bezPt->z=0.0;for(k=0;kx+=CtrlPts[k].x*bezBlendFcn;bezPt->y+=CtrlPts[k].y*bezBlendFcn;bezPt->z+=CtrlPts[k].z*bezBlendFcn;}}voidbezier(wcPt3D*ctrlPts,GLint

6、nCtrlPts,GLintnBezCurvePts){wcPt3DbezCurvePt;GLfloatu;GLint*C,k;C=newGLint[nCtrlPts];binomiaCoeffs(nCtrlPts-1,C);for(k=0;k<=nBezCurvePts;k++){u=GLfloat(k)/GLfloat(nBezCurvePts);computeBezPt(u,&bezCurvePt,nCtrlPts,ctrlPts,C);plotPoint(bezCurvePt);}delete[]C;}voiddisplayFcn(void){GLintnCtrlPts=5

7、,nCtrlPts2=6,nBezCurvePts=1000;wcPt3DctrlPts[5]={{-135.0,-59.0,0.0},{-59.0,95.0,0.0},{0.0,-40.0,0.0},{70.0,120.0,0.0},{78,-125.0,0.0}};wcPt3DctrlPts2[6]={{-118.0,20.0,0.0},{-85.0,45.0,0.0},{-26.0,-126.0,0.0},{38.0,88.0,0.0},{58.0,188.0,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。