



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机图形学实验报告实验名称 Bezier曲线和样条曲线的生成算法 评分 实验日期 2012 年 5 月 30 日 指导教师 刘长松 姓名 专业班级 学号 一、实验目的1、 复习Bezier曲线和B样条曲线的参数表示法。2、 编程实现用二次Bezier曲线绘制。3、编程实现用三次Bezier曲线绘制和分段光滑Bezier曲线图形的绘制。4、用三次B样条函数绘制曲线。二、实验要求1、编程实现在屏幕上绘制出两次Bezie曲线的几何图形和特征多边形图形,对于直线和曲线设置不同的线形和颜色。2、现在屏幕上绘制出三次Bezie曲线的几何图形和特征多边形图形,对于直线和曲线设置不同的线形和颜色。3、 编程实现用分段三次Bezier曲线绘制光滑Bezier曲线图形。4、 编程实现在屏幕上绘制出三次B样条函数绘制曲线。5、 编程实现在屏幕上绘制出光滑连接的三次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)。次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)。三次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)。三次B样条函数绘制曲线的光滑连接条件为:对于N个顶点,取P1、P2、P3、P4 4个顶点绘制在第一段三次样条曲线,再取P2、P3、P4 、P5 4个顶点绘制在第二段三次样条曲线,总计可绘制n-3段光滑连接的三次样条曲线。2、程序设计方法根据Bezier曲线的定义,输入Bezier曲线的特征多边形(例如三次Bezier曲线输入四个型值点),然后把t从01分成n等分,按相应的Bezier曲线公式计算出Bezier曲线上的点,用绘直线段的方法依次这些点连接起来,就得到Bezier曲线。如果要画多段Bezier曲线,可设置一些变量存放Bezier曲线的条数,按条数依次绘制出来即可。四、程序调试中的问题 在程序调试过程中,遇到的问题基本上还是与前几次大致上是一样的,都是一些编写代码时的小问题,在程序调试时能及时发现并修改。五、程序运行结果或数据六、实验收获及体会此次试验相对之前的来说还算是比较难的,不过通过这次实验再次复习了Bezier曲线和B样条曲线的参数表示法。用编程实现用二次、三次Bezier曲线绘制和分段光滑Bezier曲线图形的绘制。七、参考源程序(可附页)#include#include#include #includefloat px=50, 200, 150,140,180,230,300,330,400,430,450,500,680, py=200,230,230,160,20, 50, 120,430,250,150,760,300,320, n;void b()float a0,a1,a2,a3,b0,b1,b2,b3,i,t,dt;int k,x,y;dt=1/n;for(k=0;kn-3;k+=3)a0=pxk;a1=-3*pxk+3*pxk+1;a2=3*pxk-6*pxk+1+3*pxk+2;a3=-pxk+3*pxk+1-3*pxk+2+pxk+3;b0=pyk;b1=-3*pyk+3*pyk+1;b2=3*pyk-6*pyk+1+3*pyk+2;b3=-pyk+3*pyk+1-3*pyk+2+pyk+3;for(i=0;in;i+=0.1) t=i*dt; x=a0+a1*t+a2*t*t+a3*t*t*t; y=b0+b1*t+b2*t*t+b3*t*t*t; if(i=0.0) moveto(x,y); lineto(x,y); void main()int graphdriver=DETECT, graphmode=0,i;initgraph(&graphdr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省中甸县2025年上半年事业单位公开遴选试题含答案分析
- 毛织品行业透视
- 河北省新河县2025年上半年事业单位公开遴选试题含答案分析
- 河北省无极县2025年上半年事业单位公开遴选试题含答案分析
- 2025版商场电工系统调试与验收服务合同
- 2025年度水泥产品质量保证与售后服务合同
- 2025年充电桩安装与电力系统接入合同模板
- 2025版影视动画设计费合作协议书下载
- 2025年度企业员工劳动合同绩效评估与薪酬调整合同
- 2025版石膏制品批发采购合同范本
- 电池火灾安全知识培训课件
- 2025年CAD机械制图考试题库及答案
- 云南省澜沧拉祜族自治县2025年上半年事业单位公开招聘教师岗试题含答案分析
- 2025工会基础知识考试题库及参考答案
- 养老护理员基础照护试题(含参考答案)
- 教师职业技能提升培训教程
- 2025年安徽省宿州市辅警协警笔试笔试测试卷(含答案)
- 2025年医院财务科招聘考试题目(附答案)
- 高血压病例汇报
- 六年级上册语文1-8单元习作范文
- 第10课 公共场所言行文明 第1课时(课件)2025-2026学年道德与法治三年级上册统编版
评论
0/150
提交评论