计算机图形学-样条曲线Spline
内容来自《计算机图形学》第四版 第14章-样条表示
目录
- [1] 样条的种类
- 1. 插值样条
- 2. 逼近样条
- [2] 参数连续性条件
- [2] 几何连续性条件
- [3] 样条描述
- 1. 列出一组施加在样条上的边界条件
- 2. 列出描述样条特征的行列式
- 3. 列出一组混合函数或基函数
- [4] 三次样条插值方法
- 1. 自然三次样条 Natural Cubic Spline
- 2. Hermite 插值
- 3. Cardinal 样条
- 4. Kochanek-Bartels 样条
- 样条:通过一组指定点集生成平滑曲线的柔型带
- 样条曲线:计算机图形学中,样条曲线指多项式曲线段连接而成的曲线
[1] 样条的种类
给定一组控制点,可以生成一条样条曲线,这些点给出了曲线的大致形状。根据这些控制点位置,可以使用以下两种方法之一选取分段连续参数多项式函数。
1. 插值样条
当选取的多项式使得曲线通过每个控制点,则所得曲线称为该组控制点的插值(interpolate)样条曲线。插值曲线常用于数字化绘图或指定路径。
方法包括:
- 自然三次样条
- Hermite 插值
- Cardinal 样条
- Kochanek-Bartels 样条
2. 逼近样条
另一情况,当选取的多项式使部分或全部控制点不在生成的曲线上,则所得曲线称为该组控制点的逼近(approximate)样条曲线。逼近曲线一般作为设计工具来构造对象形体。
方法包括
- Bezier曲线
- B样条
- Beta样条
- 有理样条
[2] 参数连续性条件
为保证分段参数曲线从一段到另一段连续过渡,可以在连接点处要求各种连续性条件(continuity conditions),如样条的每一部分以参数方程描述:
x=x(u),y=y(u),z=z(u),u∈[u1,u2]x=x(u), y=y(u), z=z(u), u∈[u_1,u_2]x=x(u),y=y(u),z=z(u),u∈[u1,u2]
则通过曲线段公共部分匹配连接的参数导数,从而建立参数连续性(parametric continuity)。
0阶参数连续性 C0C^0C0 简单地表示曲线相连;
一阶参数连续性 C1C^1C1 说明代表两条相邻曲线段的方程在相交点处有相同的一阶导数:如连接点u0u_0u0两侧曲线的参数方程分别为x1(u),y1(u)x_1(u), y_1(u)x1(u),y1(u)和x2(u),y2(u)x_2(u), y_2(u)x2(u),y2(u),那么x1′(u)=x2′(u)x_1'(u)=x_2'(u)x1′(u)=x2′(u)且y1′(u)=y2′(u)y_1'(u)=y_2'(u)y1′(u)=y2′(u)时达到一阶参数连续性,其中’表示对参数uuu求导。
二阶参数连续性 C2C^2C2 同理,表示交点处切向量的变化率相等。
[2] 几何连续性条件
0阶几何连续性 G0G^0G0 和一阶参数连续性C0C^0C0含义相同,表示曲线相连;
一阶几何连续性 G1G^1G1 说明代表两条相邻曲线段的方程在相交点处的参数导数成比例:如连接点u0u_0u0两侧曲线的参数方程分别为x1(u),y1(u)x_1(u), y_1(u)x1(u),y1(u)和x2(u),y2(u)x_2(u), y_2(u)x2(u),y2(u),那么x1′(u)/y1′(u)=x2′(u)/y2′(u)x_1'(u)/y_1'(u)=x_2'(u)/y_2'(u)x1′(u)/y1′(u)=x2′(u)/y2′(u)时达到一阶几何连续性,其中’表示对参数uuu求导。实际上,即不用参数表达曲线时,曲线写成y=f(x)y=f(x)y=f(x),交点两侧曲线y对x导数相等。
二阶几何连续性 G2G^2G2 同理。
[3] 样条描述
以三次样条为例,有以下三种等价描述:
1. 列出一组施加在样条上的边界条件
列出参数表达式,以x为例:
曲线的边界条件可以设为端点坐标x(0)x(0)x(0)和x(1)x(1)x(1)及端点处的一次导数x′(0)x'(0)x′(0)和x′(1)x'(1)x′(1),这四个边界条件即可充分确定四个系数。
2. 列出描述样条特征的行列式
将上述参数方程重写为矩阵型
U是参数u的幂次行矩阵,C是系数列矩阵。C可通过边界条件解方程求得:
MgeomM_{geom}Mgeom是包含样条上几何约束值(边界条件,包括控制点坐标值和其他已指定的几何约束)的四元素列矩阵,MsplineM_{spline}Mspline将几何约束值转化称多项式系数。从而可以得到
MsplineM_{spline}Mspline描述了一个样条表示,称为基本矩阵。
3. 列出一组混合函数或基函数
最后,通过特征方程,可以得到关于坐标x的几何约束参数多项式表示:
gkg_kgk是约束参数,类似控制点坐标和控制点处的曲线斜率,BFkBF_kBFk是混合函数或称为基函数。
[4] 三次样条插值方法
1. 自然三次样条 Natural Cubic Spline
在使用公式表示一个自然三次样条时,需要两个相邻曲线段正在公共边界处有相同的一阶和二阶导数,即自然三次样条具有C2C^2C2连续性。
如图,以参数方程x(u)x(u)x(u)为例,有n+1个控制点,n段曲线,每段曲线4个系数,共有4n个多项式系数待定。
分析约束数量:除去首末控制点,共n-1个内部控制点,每个内部控制点需要满足四个约束,包括左右两端曲线经过该控制点、左右两端对参数一阶导数和二阶导数相等。这样出现4n-4个约束。 对于首末控制点,各有一个位置约束,则共有4n-2个约束。还需两个约束条件,这时有两种解决方案:
- 指定首末控制点处二阶导数=0
- 增加两个隐含控制点,分别位于原首末控制点的外侧。这时,所有控制点都成为内部控制点,即满足4n个约束条件。
自然三次样条的主要缺陷: 若控制点中的任意一个发生了变动,则整条曲线都要受到影响,即不支持“局部控制”。
2. Hermite 插值
指定每个曲线段的控制点的位置和一阶导数,那么对每个内部控制点,有4个约束:两侧曲线经过该控制点、两侧曲线导数等于给定值;对于首末控制点,各有2个约束,分别是位置约束和导数约束。那么共计4(n-1)+2*2 = 4n个约束。
这样,Hermite样条支持局部调整,因为每个曲线段仅依赖其端点的约束。
记每一段曲线的约束为端点pk,pk+1p_k, p_{k+1}pk,pk+1和端点斜率Dpk,Dpk+1Dp_k, Dp_{k+1}Dpk,Dpk+1,则参考[3]-2,可以通过约束计算系数,带入曲线表达式可得:
实际上,在这里,H即为基函数,也成为混合函数。
但是,除了控制点坐标之外,更好的处理方法是不需要处理输入曲线的斜率或其它几何信息即能生成样条曲线,Cardinal 样条和Kochanek-Bartels 样条可以满足这样的要求。
3. Cardinal 样条
在Cardinal样条中,一个控制点的一阶导数值可以由两个相邻控制点的坐标进行计算。
一个Cardinal样条完全由四个连续控制点给出,中间两个控制点是曲线端点,另外两个点用于计算端点斜率。
控制点pkp_kpk和pk+1p_{k+1}pk+1处的一阶导数和弦pk−1pk+1p_{k-1}p_{k+1}pk−1pk+1、pkpk+2p_{k}p_{k+2}pkpk+2成正比。参数t称为张量(tension)参数,控制样条与输入控制点之间的松紧程度。当t=0时,这样的曲线称为Catmull-Rom样条或Overhauser样条。
4. Kochanek-Bartels 样条
Kochanek-Bartels 样条是Cardinal样条的扩展,将两个附加参数引入到约束方程中,从而为调整曲线形状提供更多方便。
t是张量参数,b是偏离参数,c为连续性参数。
即通过其他控制点控制某控制点的导数的方式更复杂一些,可以产生更多控制效果。
计算机图形学-样条曲线Spline相关推荐
- 计算机图形学--------充分理解B样条曲线
样条(spline)二字,从英文翻译过来的,让人费解.B样条的数学定义更是让人匪夷所思.看了好几本参考教材,还是把总结一下B样条这个概念. 一.解释什么是样条. 实际应用中,样条是一根富有弹性的细木条 ...
- 计算机图形什么叫参数连续性,计算机图形学--参数三次插值样条曲线.ppt
计算机图形学--参数三次插值样条曲线 参数三次插值样条曲线 三次多项式方程是能表示曲线段的端点通过特定点且在连接处保持位置和斜率的连续性的最低阶次的方程.与更高次的多项式方程相比,三次样条只需要较少的 ...
- 计算机图形学E11——B样条曲线
其他计算机图形学实验见 链接 #include<gl/glut.h> #include<iostream> #include<algorithm> #include ...
- 计算机图形学——bazier曲线和B样条曲线
目录 前言 一.bazier曲线 1.bazier曲线的由来 二.B-spline 1.为何要引入B-spline曲线,Bazier曲线有何不足 2.B-spline曲线方法 前言 写这篇文章是因为最 ...
- 计算机图形学学习笔记(5.1)几何造型与样条
几何造型技术 两类对象: 规则对象是指能用欧氏几何进行描述的形体,如点.直线.曲线.平面.曲面或实 体等. 不规则对象是指丌能用欧氏几何加以描述的对象,如山.水.树.草.云.烟等自然界丰富多彩的对象. ...
- 计算机图形学 | 探秘造型技术
计算机图形学 | 探秘造型技术 计算机图形学 | 计算机图形学 | 探秘造型技术 5.1 初识造型技术 什么是造型技术? 图形的构成 实体的定义 5.2 样条的魔力 样条的概念 插值与逼近样条 连续性 ...
- 第一个使用计算机图形学术语,计算机图形学考题
下面哪个函数是OpenGl的工具函数( ) A.glBegin B.glEnd C. glClear D. gluLookAt Breseham算法直线算法中,当误差项d 0.5时,直线与列垂直网格的 ...
- 计算机图形学曲线生成原理,计算机图形学_曲线及生成.ppt
计算机图形学_曲线及生成 华中理工大学计算机学院 陆枫 99-7 1999年7月 7.2.1 曲线的表示要求 1)唯一性 2)几何不变性 3)易于定界 4)统一性 5)易于实现光滑连接 6)几何直观 ...
- 学界 | 清华AMiner团队发布53页计算机图形学研究报告
来源:AI科技评论 摘要:清华 AMiner 团队近日发布新一期研究报告--<计算机图形学研究报告>,报告全文共 53 页,从概念.技术.人才.会议.应用及相应趋势详细介绍了计算机图形学的 ...
- 清华大学计算机图形学课程
教学大纲 课堂讲授的主要的知识点: 第一章 图形学简介 1.1 计算机图形学的研究内容 1.2 发展的历史回顾 1.3 应用及研究前沿 1.4 图形设备 2学时 第二章 颜色模型.图像基本知识.Pho ...
最新文章
- 如何改变一个地图的Zoom单位
- Spring实现AOP的4种方式
- c语言题目及答案1037,PAT Basic 1037. 在霍格沃茨找零钱(20)(C语言实现)
- sentinel里的双检锁
- Spring中AOP切面编程学习笔记
- readonly与disabled属性在css中区别
- KVM Disk Cache简析
- 《JQuery 能干点啥~》第8讲 XPath选择器
- 串口连接设置超级终端管理交换机
- eclipse中追加html模板,Eclipse创建自定义HTML5,JSP模板
- matlab堆积式玫瑰图,[转帖]堆积式南丁格尔玫瑰图模板
- 执行maven install命令报java不支持diamond语法
- windows下安装maven后运行:mvn help:system报错
- 数据产品经理类型划分和工作汇报框架
- 计算机动漫学的什么软件,电脑动漫绘画哪个软件比较好?
- 彻底搞懂Python切片操作_xing2516_新浪博客
- 07-19 解决灰鸽子新变种 Rootkit Vanti gen等及www 58111 com劫持 第5版
- 中科燕园gis外包------北京市人口普查地理信息系统
- 能源科技投资高峰论坛3月强势登陆上海
- 互联网服务器攻防秘笈