图形学实验五常用曲面与曲线的生成算法分析报告.docVIP

图形学实验五常用曲面与曲线的生成算法分析报告.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
贵州大学实验报告 学院:计算机科学与信息学院 专业:计算机科学与技术 班级: 101 姓名 学号 实验组 5 实验时间 2013.5.2 指导教师 吴云 成绩 实验项目名称 常用曲面与曲线的生成算法 实验目的 1、通过实验,进一步理解和掌握生成Hermit、Bezier和B样条曲线及Bezier曲面的生成算法 2、掌握Hermit、Bezier、B样条曲线及Bezier曲面的基本生成过程 3、通过编程,会在一种语言环境下编程实现三次Hermit、Bezier、B样条曲线及Bezier曲面的绘制 编程实现Hermit曲线的绘制 2、编程实现B样条曲线的绘制。 编程实现Bezier曲线的绘制。 编程实现Bezier曲面的绘制。3次Hermite样条曲线 (1). 将参数样条曲线中的参数区间进行 等距参数化,即令Li长度归一化为1。就得到Hermite曲线。 (2). 用其端点位矢Pi(0)、Pi(1)和切矢Pi’(0)和Pi’(1)描述。 记为:G=A?M 求解得:A=G ? MH 令: 可将其简记为: 上式是三次Hermite(Ferguson)曲线的几何形式。 几何系数是P0、P1、P’0、P’1。 F0,F1, G0,G1称为基函数/调和函数。 (3). 每一段Hermite曲线就是控制点P0、P1、P’0、P’1的加权和,权值由基函数F0,F1, G0,G1确定。通过增加顶点并指定相应的切矢,就可得到分段Hermite样条曲线。 2、Bezier曲线 (1)基本构型原理是: a.两点P0、P1确定一条直线,表示为一次参数方程:p=p0+(p1-p0)t b.三点确定一条二次曲线: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的展开式相似,在函数逼近论中,称这种系数函数为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样条曲线的次数可根据需要指定,不像Bezier曲线的次数是由控制点的个数来确定。 (4). B样条曲线的方程定义为: 给定空间n+1个点Pi(i=0,1,2,…,n),及参数节点向量:T={ti}(ti≤ti+1 ,i=0,1,2,…,m),由下式定义的曲线P(t) 称为k阶 (k-1次)B样条曲线: 阶数k,控制顶点数n+1,节点个数m+1,具有以下关系: m=n+k 记T为:Tn,k={ti}(ti≤ti+1 ,i=0,1,2,…,n,…,n+k) (4)Bezier曲面 (1). 给定空间16个位置点rij,可以确定一张三次Bézier曲面片: (2). 首先生成四条v向的三次Bézier曲线: (3). 根据“线动成面”的思想,取v*∈[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数学头文件,写入控制多边形的初始化和绘制函数的代码并对写入成员函数的函数体,

文档评论(0)

南非的朋友 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档