实验四Bezier曲线生成算法实现
- 格式:doc
- 大小:34.00 KB
- 文档页数:8


淮阴工学院计算机科学系
实验报告书
课程名: 《 计算机图形学 》
题 目: 实验4 BEZIER曲线或B样条曲线的绘制
班 级:
学 号:
姓 名:
评语:
成绩: 指导教师: 批阅时间: 年 月 日
《计算机图形学 》实验报告 - 1 -
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]);
《计算机图形学 》实验报告 - 2 -
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];
实验四 实现Bezier曲线的生成算法
一、实验目的
1、熟悉CDC图形程序库;
2、掌握Bezier曲线的生成算法;
3、掌握利用Bezier曲线生成复杂形状的曲线;
二、实验性质
验证性
三、实验要求
1、认真阅读本次实验的目的,了解本次实验要求掌握的内容;
2、能够根据实验指导书的要求,完成相关的内容;
四、实验内容
(一)生成绘图应用程序的框架(如下图)
具体实现见第一次实验,过程不再详细说明。
(二)在应用程序中增加菜单
完成相关菜单的设计,具体的效果如下图所示,并设置好相关菜单消息的映射,具体的实现在前面的实验中介绍过,再此不在详细说明。
(三)在绘图函数中添加代码
通过以上步骤,得到了与菜单对应的消息映射,就可以在函数中添加代码绘制图形了。
1、利用Bezier曲线的生成算法实现二次Bezier曲线的生成(算法的详细原理见教材)。
void CBezierView::OnBezier2()
{
// TODO: Add your command handler code here
CDC*pDC=GetDC();//得到绘图类指针
RedrawWindow();//重绘窗口
CPen bluepen(PS_SOLID,2,RGB(0,0,255));//创建画实线、线宽为2的蓝色画笔
CPen *old=pDC->SelectObject(&bluepen);
float x0=100,y0=100,x1=200,y1=50,x2=150,y2=250;
float i,x,y,dt,t,n=30.0;
dt=1/n;
for(i=0;i<=n;i++)
{
t=i*dt;
x=x0*(1-t)*(1-t)+x1*2*t*(1-t)+x2*t*t;
y=y0*(1-t)*(1-t)+y1*2*t*(1-t)+y2*t*t;
if(i==0)pDC->MoveTo(x,y);
第1页 昆 明 理 工 大 学 理 学 院
信息与计算科学专业
操作性实验报告
年级: 10级 姓名: 刘陈
学号: 201011101128 指导教师:
胡杰
实验课程名称: 计算机图形学程序设计 开课实验室: 理学院机房216
实验成绩:
学风(5) 观察能力(15) 操作能力(30) 调试能力(50) 其它 总分
实验内容:
1.实验/作业题目:用计算机高级语言VC++6.0实现计算机的基本图元绘制
2.实验/作业课时:2学时
3.实验过程(包括实验环境、实验内容的描述、完成实验要求的知识或技能):
实验环境:(1)硬件:每人一 台PC机
(2)软件:windows OS,VC++6.0或以上版本。
试验内容及步骤:
(1)在VC++环境下创建MFC应用程序工程(单文档)
(2)编辑菜单资源
(3)添加菜单命令消息处理函数
(4)添加成员函数
(5)编写函数内容
试验要求:
(1)掌握Bezier曲线、Bezier曲面、及另一个曲面的算法。
(2)实现对Bezier曲线、Bezier曲面、及另一个曲面。
(3)试验中调试、完善所编程序,能正确运行出设计要求结果。
(4)书写试验报告上交。
4.程序结构(程序中的函数调用关系图)
第2页
5.算法描述、流程图或操作步骤:
在lab4iew.cpp文件中添加如下头文件及变量
int flag_2=0;
int n_change;
#define M 30
#define PI 3.14159 //圆周率
#include "math.h" //数学头文件
在lab4iew.h文件中的public内添加变量 :
Bezier曲线实验报告
1015403072 任茜
一、 .实验目的
1、了解服装CAD中Bezier曲线的应用。
2、掌握Bezier曲线的基本原理和方法,了解Bezier曲线的特点。
3、运用Visual Basic 6.0软件编写程序实现曲线的成功绘制,并认识Bezier曲线的形状及特点。
二、 实验原理
在空间给定n+1个点P0,P1,P2,,,Pn,称下列参数曲线为n次的Bezier曲线。
其中Ji,n(t)是Bernstein基函数,即
一般称折线P0P1P2…Pn为曲线P(t)的控制多边形;称点P0,P1,P2,…,Pn为P(t)的控制顶点。在空间曲线的情况下,曲线P(t)=(x(t),y(t),z(t))和控制顶点Pi=(Xi,Yi,Zi)的关系用分量写出即
当t在区间[0,1]上变动时,就产生了Bezier曲线。若只考虑x和y,就是平面上的Bezier曲线。以三次Bezier曲线为例,它可用矩阵形式表示如下
三、 实验程序 Private pt() As mypoint
Private Sub Form_Load()
ReDim pt(1)
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim s As Integer
pt(UBound(pt)).x = x
pt(UBound(pt)).y = y
Picture1.Circle (x, y), 15
s = Val(UBound(pt))
Select Case s
Case 1
Picture1.Print "P0"