计算机图形学2010_04样条曲线.docVIP

  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文档。上传文档
查看更多
计算机图形学2010_04样条曲线

第四章 样条曲线 第一节 样条曲线基础 一、概念 曲线:连续光滑的曲折线段。 规则曲线:可以用一个方程式进行表示。如圆、椭圆、抛物线、双曲线、正弦余弦曲线等。 不规则曲线:不能用方程式进行表示。 样条曲线是用于表示不规则曲线的一种方法,其多段规则曲线对不规则曲线进行表示,并保证各段曲线连接处的连续和光滑。 二、样条线段的表示方式 1. 参数方程 规则曲线通常用显示或隐式方程来表示。如抛物线表示成:,这是显示方程;圆表示成:,这是隐式方程。 样条曲线中的分段曲线通常采用参数方程表示,其一般形式如下: 如抛物线的参数方程为: 圆的参数方程为: 2. 参数方程的矢量表示 对多项式参数方程,通常采用矢量表示方式。 如二次曲线表示为: 其中: 该表达式相当于: 三、样条曲线的定义方式 样条曲线通过一组点定义。 用于定义样条曲线的点有两种: 型值点:曲线上的点,样条曲线必须通过型值点。 控制点:用于控制曲线形状的点,曲线本身不通过控制点。 第二节 二次插值样条曲线 一、单段二次样条曲线的建立 二次样条曲线由若干段依次相连的二次曲线段组成。 这里首先讨论整个样条曲线上单段二次曲线的建立。 二次曲线的一般表达式: 确定出A1,A2,A3三组系数,即确定出了该曲线。 由相邻的三个型值点P1,P2,P3来建立曲线。 P1为曲线段的起点,对应于t=0; P3为曲线段的终点,对应于t=1; P2为曲线段的中间点,对应于t=0.5。 有: 这形成三个矢量联立方程: 求解可得: 由此即得到了该段二次样条曲线。 例:对三个型值点(1,1),(5,5),(8,2),生成二次样条曲线。 解: 则二次曲线为: 也即: 三、二次样条曲线的加权合成 合成方式: (1)依次逐点向后取三点生成单段样条曲线。 (2)除首尾两点外,每相邻两点之间将有两条样条曲线,如下。 (3)将两点之间的样条曲线进行加权合成。 (4)权重的取值原则:越靠近Pi+1点Si的权重越大,越靠近Pi+2点Si+1的权重越大。 推导合成后的曲线形式: (1)单段二次曲线的表达式 则: (2) 曲线参数的取值区间 Si曲线对应于合成曲线的ti的取值区间为[0.5,1]; Si+1曲线对应于合成曲线的ti+1的取值区间为[0, 0.5]。 合成曲线的参数记为t,其取值区间确定为[0, 0.5]。 将各曲线的参数统一为t,则有:。 (3) Si,Si+1曲线基于t的表达式 (4)权重 权重的特性:在Pi+1点,Si曲线的权重为1,在Pi+2点Si+1曲线的权重为1,在两点之间线性过度。 权重函数为: (5)合成曲线的表达式 将权重和两段二次曲线的表达式带入下式: 可得,关于型值点的表达式: 可转换为,关于t的各次方的表达式 按这种合成方式,实质上是由4点确定一段样条曲线,即由Pi,Pi+1,Pi+2,Pi+3四个点,产生出Pi+1至Pi+2之间的曲线段。这样产生的曲线段能保证各段之间光滑连接。 最终的样条曲线是一个三次曲线。 四、端点的处理 按上述合成方式,P1—P2,Pn-1—Pn之间的线段无法合成。 可采用如下简单的处理方法: P1—P2之间的曲线直接采用P1,P2,P3三点所产生的二次曲线。 Pn-1—Pn之间的曲线直接采用Pn-2,Pn-1,Pn三点所产生的二次曲线。 这两段曲线能够与相邻的曲线保持光滑连接。 五、二次样条曲线总结 给定n个型值点P1,P2,……, Pn可生成各点之间的曲线如下: Pi+1—Pi+2间的曲线(1≤i≤n-3): P1—P2间的曲线: Pn-1—Pn间的曲线: 六、样条曲线的点阵生成 1. t等间隔取点法 等间隔取t值,依次计算所对应的点(x,y),相邻的点之间画直线。 例:按间隔0.2取t值,可得: t x y 0 1 1 0.2 3 3 0.4 4 5 0.6 6 5 0.8 7 4 1 8 2 2. 对中生成法 void DrawCurve(int x1, int y1, float t1, int x2, int y2, float t2) //两端点的坐标及对应的t值 { int x,y; float t=(t2+t1)*0.5; int x=(int)(CurveX(t)+0.5); int y=(int)(CurveY(t)+0.5); PutPixel(x,y); if(abs(x-x1)1 | abs(y-y1)1 ) DrawCurve(x1, y1, t1, x, y, t); if(abs(x2-x)1 | abs(y2-y)1 ) DrawCurve(x, y, t, x2, y2, t2); } // CurveX(t), Cur

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档