图形学实验报告五 常用曲面与曲线的生成算法_第1页
图形学实验报告五 常用曲面与曲线的生成算法_第2页
图形学实验报告五 常用曲面与曲线的生成算法_第3页
图形学实验报告五 常用曲面与曲线的生成算法_第4页
图形学实验报告五 常用曲面与曲线的生成算法_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、贵州大学实验报告学院:计算机科学与信息学院 专业:计算机科学与技术 班级: 101姓名学号实验组5实验时间2013.5.2指导教师吴云成绩实验项目名称常用曲面与曲线的生成算法实验目的1、通过实验,进一步理解和掌握生成Hermit、Bezier和B样条曲线及Bezier曲面的生成算法2、掌握Hermit、Bezier、B样条曲线及Bezier曲面的基本生成过程3、通过编程,会在一种语言环境下编程实现三次Hermit、Bezier、B样条曲线及Bezier曲面的绘制实验要求 1、编程实现Hermit曲线的绘制。2、编程实现B样条曲线的绘制。3、编程实现Bezier曲线的绘制。 4、编程实现Bezi

2、er曲面的绘制。实验原理1. 3次Hermite样条曲线 (1). 将参数样条曲线中的参数区间进行 等距参数化,即令Li长度归一化为1。就得到Hermite曲线。(2). 用其端点位矢Pi(0)、Pi(1)和切矢Pi(0)和Pi(1)描述。 记为:G=AM 求解得:A=G MH 令:可将其简记为: 上式是三次Hermite(Ferguson)曲线的几何形式。 几何系数是P0、P1、P0、P1。 F0,F1, G0,G1称为基函数/调和函数。 (3). 每一段Hermite曲线就是控制点P0、P1、P0、P1的加权和,权值由基函数F0,F1, G0,G1确定。通过增加顶点并指定相应的切矢,就可得

3、到分段Hermite样条曲线。2、Bezier曲线(1)基本构型原理是:a.两点P0、P1确定一条直线,表示为一次参数方程:p=p0+(p1-p0)tb.三点确定一条二次曲线:p=(1-t)2p0+2t(1-t)p1+t2p2, c.三个点p0,p1,p2称作顶点,中间顶点p1不但控制曲线的首末端切矢(方向和大小),而且唯一确定曲线的形状。d.以此类推,n+1个顶点唯一确定一条n次曲线。顶点P0,P1,Pn的第一条边P0P1决定曲线的一阶导矢,第1,2条边决定曲线的二阶导矢,第1,2,3条边决定曲线的三阶导矢.(2).曲线方程中,各顶点的系数与二项式(1-t)n的展开式相似,在函数逼近论中,称

4、这种系数函数为Bernstein基函数。(3). 给定空间n+1个点的位置矢量Pi(i=0,1,2,n)则Bézier曲线可定义为: 其中,Pi构成该Bézier曲线的特征多边形,Bi,n(t)是n次Bernstein基函数: (4). 3次Bézier曲线 3.B样条曲线(1). 在Bézier曲线方程中,用B样条基函数代替Bernstein基函数,就得到B样条曲线。(2). B样条曲线的突出优点是对曲线的局部修改功能,因为B样条曲线是分段组成的(很容易产生C2连续性),所以控制多边形的顶点对曲线的控制灵活而直观。(3). B样条曲线的次数可根据需要指

5、定,不像Bezier曲线的次数是由控制点的个数来确定。(4). B样条曲线的方程定义为:给定空间n+1个点Pi(i=0,1,2,n),及参数节点向量:T=ti(titi+1 ,i=0,1,2,m),由下式定义的曲线P(t) 称为k阶 (k-1次)B样条曲线: 阶数k,控制顶点数n+1,节点个数m+1,具有以下关系:m=n+k记T为:Tn,k=ti(titi+1 ,i=0,1,2,n,n+k)(4)Bezier曲面 (1). 给定空间16个位置点rij,可以确定一张三次Bézier曲面片:(2). 首先生成四条v向的三次Bézier曲线:(3). 根据“线动成面”的思想,取v

6、*0,1,在四条v线上取点为控制点,沿u向生成三次Bézier曲线:(4). 将u,v向曲线方程合并得 (5). 3次Bézier曲面的矩阵表达式: 实验环境 Microsoft Visual Studio 6.0 实验步骤一绘制Hermit曲线:1 创建一个MFC工程,取名为zjie_ex05: 2、在CZjie_ex05View.h文件中声明成员函数和变量: 3在CZjie_ex05View.cpp文件中,头文件加入# define ROUND(a) int(a+0.5),#include "math.h"数学头文件,写入控制多边形的初始化和绘制函数

7、的代码并对写入成员函数的函数体,具体代码在此省略 。 4设计Menu在资源视图Resource View上双击Menu,打开IDR_MAINFRAME,设计如下:并在CZjie_ex05View.cpp中参加菜单函数,具体函数代码在此省略。5运行调试二、绘制B样条曲线:1 创建一个MFC工程,取名为zjie_B: 2、在zjie_BView.h文件中声明成员函数和变量: 3在在zjie_BView.h文件中,头文件加入# define ROUND(a) int(a+0.5),写入控制多边形的初始化和绘制函数的代码并对写入成员函数的函数体,具体代码在此省略 。 4设计Menu在资源视图Resou

8、rce View上双击Menu,打开IDR_MAINFRAME,设计如下:并在在zjie_BView.cpp中参加菜单函数,具体函数代码在此省略。5运行调试三绘制Bezier曲线:1. 创建一个MFC工程,取名为zjie_bezier:2、在zjie_bezierView.h文件中声明成员函数和变量:3.在zjie_bezierView.h文件中,头文件加入以下头文件:写入控制多边形的初始化和绘制函数的代码并对写入成员函数的函数体,具体代码在此省略 。 4设计Menu在资源视图Resource View上双击Menu,打开IDR_MAINFRAME,设计如下:并在在zjie_bezierVie

9、w.cpp中参加菜单函数,具体函数代码在此省略。5运行调试四Bezier曲面的绘制:1. 创建一个MFC工程,取名为zjie_Bezier_qm:2建立两个新类,分别为P3D,P2D用于设置三维坐标点和二维坐标点: 3.在zjie_Bezier_qmView.h文件中,头文件加入以下头文件:写入成员函数和变量的声明的函数体,具体代码在此省略 。 4.在zjie_Bezier_qmView.cpp文件中,头文件加入以下头文件:写入成员函数的函数体,具体代码在此省略 。 4设计Menu在资源视图Resource View上双击Menu,打开IDR_MAINFRAME,设计如下:并在在zjie_Bezier_qmView.cpp中参加菜单函数,具体函数代码在此省略。5运行调试实验内容编写绘制Hermit、Bezier、B样条曲线的程序。实验结果一 Hermit曲线:可执行程序运行初界面:点击绘图的里绘制Hermit曲线:二 绘制三次B样条曲线:1.可执行程序运行初界面:2.点击绘制三次B样条曲线:3.直接拖动多边形顶点:三 绘制Bezier曲线:1.点击绘制Bezier曲线:2.点击鼠标左键,设置控制多边形顶点,并点击右键得到曲线:一次Bezier曲线:、二次Bezier曲线:三次Bezier曲线:四次Bezier曲

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论