计算机图形学实验报告三
实 验 报 告
课程名称: 计算机图形学
实验名称: 绘制一段三次 Bezier 曲线
班 级 学 号 040930504
学 生 姓 名 朱茵茵
指 导 教 师 戴群
日 期: 2011 年 11 月
第 1 页第 1 页
计算机图形学实验报告三
一、实验目的
熟练掌握三次 Bezier 曲线参数方程
给出三次 Bezier 曲线控制顶点能生成曲线
二、实验器材
计算机
三、实验内容
绘制一段三次 Bezier 曲线
四、实验步骤
1 了解三次Bezier 曲线方程:
2、定义法绘制曲线:
假设控制点 P P P P 已经给定,按照 Bézier 曲线的定义:
0 1 2 3
3 2 3
P(t)=(1-t) P +3t(1-t)P +3t (1-t)P +t P
0 1 2 3
选取以下两种方式中的一种即可以绘制一段完整的 Bézier 曲线。
①对参数 t 在区间[0,1]内取得足够多的值,计算曲线上点的坐标
值,然后顺序将这些点连接起来,得到折线,用折线近似画出实际曲
线。当t 的取值增多,折线和实际曲线可任意接近。
②对参数 t 在区间[0,1]内取得足够多的值,计算曲线上点的坐标
值,当t 的取值增多,离散的点可以近似看成构成连续的曲线。
3 在 VB 下编程,完成 Bézier 曲线绘制一个小动物。
五、要求
1 将绘制一段完整的 Bézier 曲线编程一个子程序,在其他事件过
程中对其调用,完成一个小动物的绘制,要求小动物身体的某些部分
由Bézier 曲线绘制;
2、上机报告;
3 源程序
#include
#include
第 2 页第 2 页
计算机图形学实验报告三
#include
using namespace std;
#define KEY_POINT_NUM 6
#define CONTROL_POINT_NUM 4
#define WinWidth 1024
#define WinHeight 768
#define DrawOneLine(x1, y1, z1, x2, y2, z2) glBegin
(GL_LINES); /
glVertex3d( (x1), (y1), (z1) ); glVertex3d( (x2),
(y2), (z2) ); glEnd();
enum DRAW_FLAG{
FIRST_LINE = 0,
SECOND_LINE = 1,
第 3 页第 3 页
计算机图形学实验报告三
END = 2
};
int g_iFlag = FIRST_LINE;
int g_Viewport[4];
bool g_bIsDown = false;
double g_ModelMatrix[16];
double g_ProjMatrix[16];
double