bezier曲线或b样条曲线的绘制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
淮阴工学院计算机科学系
实验报告书
课程名:《计算机图形学》
题目:实验4 BEZIER曲线或B样条曲线的绘制
班级:
学号:
姓名:
评语:
成绩:指导教师:
批阅时间:年月日
1、实验内容或题目
编程实现三次BEZIER或B样条曲线的绘制。
2、实验目的与要求
(1) 通过实验,进一步理解和掌握生成BEZIER或B样条曲线的算法;
(2) 掌握BEZIER或B样条曲线的基本生成过程;
(3) 通过编程,会在TC环境下编程实现三次BEZIER或B样条曲线的绘制。
3、实验步骤与源程序
错误!未找到引用源。
实验步骤
1、算法、原理清晰,有详细的设计步骤;
2、依据算法、步骤或程序流程图,用C语言编写源程序;
3、编辑源程序并进行调试;
4、进行特殊模式的运行测试,并结合情况进行调整;
5、对运行结果进行保存与分析;
6、打印源程序或把源程序以文件的形式提交;
7、按格式书写实验报告。
错误!未找到引用源。
源代码
#include "graphics.h"
float px[4]={ 50,80,120,140 };
float py[4]={100,230,230,160};
void Bezier()
{
float a0,a1,a2,a3,b0,b1,b2,b3;
int k,x,y;
float i,t,n=4;
setcolor(15);
for(k=0;k<3;k++)
{
moveto(px[k],py[k]);
lineto(px[k+1],py[k+1]);
}
setcolor(4);
a0=px[0];
a1=-3*px[0]+3*px[1];
a2=3*px[0]-6*px[1]+3*px[2];
a3=-px[0]+3*px[1]-3*px[2]+px[3];
b0=py[0];
b1=-3*py[0]+3*py[1];
b2=3*py[0]-6*py[1]+3*py[2];
b3=-py[0]+3*py[1]-3*py[k+2]+py[3];
for(i=0;i<n;i+=0.001)
{
t=i;
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)moveto(x,y);
lineto(x,y);
}
}
void main()
{
int driver,mode;
driver=DETECT;
initgraph(&driver,&mode,"..\\bgi");
Bezier();
}
4、测试数据与实验结果
5、结果分析与实验体会
通过这次实验,我初步熟悉了turboc 的运行环境。
同时,我对计算机图形学也有了初步了解。
实验4让我更加了解了Bezier曲线定义和性质。
贝塞尔曲线是由两个节点的切线的四个控制点位置所定义的路径,切线的长度和角度描述了一条路径两个节点间的走向。
使用Bezier工具时只需在页面上定位一人起点,单击拖动鼠标,这时出现在屏幕上的不是绘制曲线的轨迹,而是一个以节点为中心的控制柄,并与前一个节点组成一个线段。
可通过确定控制点的位置来控制从节点延伸出的线段的曲率。
熟练地确定每个节点和使用控制点,可绘制复杂的直线和曲线。
使用Bezier绘制曲线时,CorelDraw将以单击点为中心,朝相反的方向延伸出两条曲线控制柄,控制柄显示为蓝色的虚线,它的两个端点为较小的黑色方块,控制曲线的方向和角度。
当单击定位起点后向下方拖动时,所得曲线顶点位于起点的下方,反之所得顶点位于起点的上。