Bezier曲线B样条曲线.ppt

上传人:sh****n 文档编号:7397514 上传时间:2020-03-21 格式:PPT 页数:59 大小:771KB
返回 下载 相关 举报
Bezier曲线B样条曲线.ppt_第1页
第1页 / 共59页
Bezier曲线B样条曲线.ppt_第2页
第2页 / 共59页
Bezier曲线B样条曲线.ppt_第3页
第3页 / 共59页
点击查看更多>>
资源描述
第5章曲线与曲面的生成与计算 5 1曲线的参数表示5 2Bezier B样条曲线的生成5 3曲面的参数表示5 4Bezier B样条曲面的生成 曲线和曲面是计算机图形学中研究的重要内容之一 它们在实际工作中有着广泛的应用 例如 实验 统计数据如何用曲线表示 设计 分析 优化的结果如何用曲线 曲面表示 汽车 飞机等具有曲面外形的产品怎样进行设计 才能使之美观且物理性能最佳 由于实际问题不断对曲线 曲面有许多新的要求 近二十年来 有关曲线曲面的研究文章 专著层出不穷 在实际工作中 人们常用曲线有Bezier B样条 非均匀有理B样条 Nurbs 圆锥曲线 等距线 过度线等 常用的曲面有Bezier曲面 B样条曲面 Coons曲面等 曲线与曲面的生成与计算 在本章中 我们将主要介绍曲线曲面的参数表示 Bezier B样条曲线以及Bezier B样条曲面的概念和特征 在具体讲述上面知识之前 有必要了解一下如下几个概念的区别和联系 1曲线绘制 这类问题归结为已知曲线方程 要求画出曲线2曲线插值 由实验 观测或计算得到了若干个离散点组成的点列 要求用光滑的曲线把这些离散点连结起来 3曲线逼近 在曲线形状设计中 给定了折线轮廓 要求用一曲线逼近这个折线轮廓 这类问题称为曲线逼近 注 曲线插值与曲线逼近的区别 逼近不要求曲线通过数据点 4曲线拟合 曲线 曲面的设计过程中 用插值或逼近方法是生成的曲线 曲面达到某些设计要求 曲线与曲面的生成与计算 曲线 曲面可以有显式 隐式和参数表示 但从计算机图形学和计算几何的角度来看 还是使用参数表示较好 因为采用参数方法表示曲线和曲面 可以将其形状从特定坐标系的依附性中解脱出来 很容易借助计算机得以实现 一个动点的轨迹可以用位置向量P来描述 如下图所示 X Y Z 0 u1 u2 u 6 1曲线的参数表示 曲线的参数表示 注 这里讨论的动点轨迹是在三维空间中所表示的曲线 平面轨迹曲线只是一种特殊情况 向量P与时间t有关 P P t 就是说P是时间t的函数 用坐标表示为 若把参数t换成一个普通意义的参数u 则曲线的参数形式为 例如 是一条空间曲线的参数形式 注 这是一条以点 0 1 3 为起点 3 2 5 为终点的线段 5 1曲线的参数表示 参数的含义 时间 距离 角度 比例等等 规范参数区间 0 1 归一化 矢量表示 切矢量 导函数 例 已知直线段的端点坐标 则此直线段的参数表达式为 相应的x y坐标分量为 切矢量为 直线斜率 5 1曲线的参数表示 Bezier曲线和B样条曲线都是一种自由曲线 自由曲线是指一条无法用标准代数方程来描述的曲线 在实际中 自由曲线应用十分广泛 比如轮船身外形放样时的样条曲线 汽车 飞机及各种产品的外形曲线都可以看成是自由曲线 计算机产生这种曲线的方法通常有两类 1 插值的方法 要求生成的曲线通过每个数据点 即型值点 曲线插值方法有多项式插值 分段多项式插值和样条函数插值等 2 拟合的方法 要求生成曲线靠近每个数据点 型值点 但不一定要求通过每个点 拟合的方法一般有最小二乘法 Bezier方法和B样条方法等 下面主要介绍工程上流行应用的Bezier曲线和B样条曲线 Bezier B样条曲线的生成 5 2Bezier B样条曲线的生成 Bezier曲线是由法国雷诺汽车公司的P E Bezier于20世纪70年代初为解决汽车外型设计而提出的一种新的参数表示法 这种方法的特点是 控制点的输入与曲线输出之间的关系明确 使设计人员比较直观地估计给定条件与设计出的曲线之间的关系 当设计人员 用户 使用交互手段改变输入控制点 就能很方便地在屏幕上改变拟合曲线的形状与代表它的多项式的次数以迎合设计要求 Bezier曲线是指用光滑参数曲线段逼近一折线多边形 它不要求给出导数 只要给出数据点就可以构造曲线 而且曲线次数严格依赖确定该段曲线的数据点个数 贝塞尔 Bezier 曲线 5 2Bezier B样条曲线的生成 曲线的形状依赖于该多边形的形状 即由一组多边折线 该多边折线称为特征多边形 的顶点唯一地定义出来 且只有该多边形第一个顶点和最后一个顶点在曲线上 Bezier曲线及其特征多边形如下图 三次Bezier曲线和特征多边形 注 上图是由四个控制点形成的三次Bezier曲线 曲线的形状依附于该特征多边形的形状 且特征多边形的第一条边线和最后一条边线分别表示曲线在第一个顶点和最后一个顶点的切线方向 5 2Bezier B样条曲线的生成 Bezier曲线分为开放型和封闭型两类 首尾控制点不想同为开放型 首尾控制点想同为封闭型 如下图所示 5 2Bezier B样条曲线的生成 1 Bezier曲线的定义Bezier曲线是由一组折线来定义的 且第一点和最后一点在曲线上 第一条和最后一条折线分别表示出曲线在起点和终点处的切线方向 Bezier曲线通常由特征多边形的n 1个顶点定义一个n次多项式 即给定空间n 1个点的位置矢量Pi i 0 1 2 n 则Bezier参数曲线上各点坐标的参数方程式 插值公式 是 其中参数t的取值范围为 0 1 i是有序集0 n中的一个整数值 表示顶点顺序号 n是多项式次数 也是曲线次数 5 2Bezier B样条曲线的生成 通常由n 1个顶点确定的曲线为n次曲线 在上述式中 Pi是特征多边形第i个顶点的坐标 xi yi 是伯恩斯坦 Bernstein 多项式 称为n次Bernstein基函数 定义如下 其中 5 2Bezier B样条曲线的生成 性质1 正性 2 Betnstein基函数的性质 性质2 端点性质 性质3 权性 Pr 由二项式定理可知 5 2Bezier B样条曲线的生成 性质4 对称性 性质5 递推性 即高一次的Betnstein基函数可以由两个低一次Betnstein调和函数线性组合而成 5 2Bezier B样条曲线的生成 性质6 导函数 因为将对参数t求导得 5 2Bezier B样条曲线的生成 性质7 最大值 在处达到最大值 性质8 积分 5 2Bezier B样条曲线的生成 3 Bezier曲线的性质 性质1 端点及端点切线1 Bezier曲线的起点和终点分别是特征多边形的第一个顶点和最后一个顶点 由式子可得出Bezier曲线两端点的值 这说明 Bezier曲线必须通过特征多边形的起点和终点 5 2Bezier B样条曲线的生成 2 Bezier曲线在起点和终点处的切线分别是特征多边形的第一条边和最后一条边 且切矢的模长分别为相应边长的n倍 由Bezier基函数的导函数性质可知 对求导可得 于是在起始点 其余项均为0 故有 5 2Bezier B样条曲线的生成 在终止点 其余项均为0 故有 例如 如下图所示 对于四次Bezier曲线 n 4有 1 Bezier曲线的起点和终点分别是特征多边形的第一个顶点和最后一个顶点 2 Bezier曲线在起点和终点处的切线分别是特征多边形的第一条边和最后一条边 且切矢的模长分别为相应边长的n倍 5 2Bezier B样条曲线的生成 性质2 对称性假如保持n次Bezier曲线诸顶点的位置不变 而把次序颠倒过来 即下标为i的点改为下标为n i的点 则此时曲线仍不变 只不过是曲线的走向相反而已如下图所示 5 2Bezier B样条曲线的生成 这一性质证明如下 由伯恩撕坦多项式可以导出 记次序颠倒以后的顶点为 则有 此时 由控制顶点 构造出新的Bezier曲线为 则 这个性质说明Bezier曲线在起点和终点处具有相同的几何性质 5 2Bezier B样条曲线的生成 性质3 凸包性由Bezier基函数的权性质可知 且 这一结果说明当t在区间 0 1 变化时 对某一个t值 P t 是特征多边行各项顶点Pi的加权平均 权因子依次是 在几何图形上 意味着Bezier曲线P t 在t属于 0 1 中各点是控制点Pi的凸线性组合 即曲线落在Pi构成的凸包之中 如下图所示 1 Bezier曲线凸包性 注 也就是说 当特征多边行为凸时 Bezier曲线也是凸的 当特征多边行有凸有凹时 其曲线的凸凹形状与之对应 且在其凸包范围内 5 2Bezier B样条曲线的生成 性质4 几何不变性这是指某些几何特性不随坐标变换而变化的特性 由Bezier曲线的定义知 曲线的形状和位置由其特征多边形的顶点Pi i 0 1 n 唯一确定 与坐标系的选取无关 这就是几何不变性 即 5 2Bezier B样条曲线的生成 由Bezier曲线的定义 4 几个低次Bezier曲线 1 一次Bezier曲线当n 1时为一次Bezier曲线 此时P t 为一次多项式 有两个控制点 则 我们可以推出一次 二次以及三次Bezier曲线的数学表达式 工程上应用较多的是三次Bezier曲线 下面依次讨论 5 2Bezier B样条曲线的生成 注 这表明一次Bezier曲线是连接起点P0和终点P1的直线段 这表明二次Bezier曲线是一段抛物线 其矩阵形式为 2 二次Bezier曲线当n 2时为二次Bezier曲线 此时P t 为二次多项式 有三个控制点 则 5 2Bezier B样条曲线的生成 3 三次Bezier曲线当n 3时为三次Bezier曲线 此时P t 为三次多项式 有四个控制点 由于三次Bezier曲线是用3根折线定义的3阶曲线 则有 5 2Bezier B样条曲线的生成 用矩阵表示为 5 2Bezier B样条曲线的生成 在上式中 可以看出 4 2式称为三次Bezier曲线的调和函数 构成如下图所示的4条曲线 5 2Bezier B样条曲线的生成 这4条曲线均为三次曲线 形成Bezier曲线的一组基 任何三次Bezier曲线都是这4条曲线的线性组合 5 2Bezier B样条曲线的生成 例如 10次Bezier曲线的调和函数如下 构成如下图所示的11条曲线 5 2Bezier B样条曲线的生成 一般的 对于n次Bezier曲线 用矩阵形式可表示为 其中T为 n 1 X n 1 的方阵 第i列的各元素为基函数中按t的降幂排列时的各个系数 5 2Bezier B样条曲线的生成 解 Step1 由公式计算对应不同t值下的值 如下表所示 例1 假定 是一个Bezier曲线特征多边形顶点的位置 画出三次Bezier曲线 5 Bezier曲线计算举例 5 2Bezier B样条曲线的生成 Step2 求出不同t值下P t 的值 5 2Bezier B样条曲线的生成 根据以上这些点坐标就可画出三次Bezier曲线 具体图形如下图所示 注 上述的取值和个数都不唯一 注 5 2Bezier B样条曲线的生成 注 根据曲线方程画出曲线一般是先计算出曲线上一系列的点或适当靠近的点 然后依次将这些点用直线连起来 得到一条由折线表示的近似曲线 只要这些点靠得足够近和足够密 看起来就是一条足够光滑的曲线 5 2Bezier B样条曲线的生成 2 参考程序为 例2 上机编程绘制一三次Bezier曲线段 1 为了编程绘制Bezier曲线段 将其矢量形式 变成分量形式 5 2Bezier B样条曲线的生成 BezierCurve intx y n floati dt t charmsg 80 typedefstructVpoints floatx floaty VERpoints VERpointsVertex 4 50 50 150 150 300 130 350 50 floatn 5 2Bezier B样条曲线的生成 dt 1 float n for i 0 i n i t i dt x Vertex 0 x 1 t 1 t 1 t Vertex 1 x 3 t 1 t 1 t Vertex 2 x 3 t t 1 t Vertex 3 x t t t y Vertex 0 y 1 t 1 t 1 t Vertex 1 y 3 t 1 t 1 t Vertex 2 y 3 t t 1 t Vertex 3 y t t t if i 0 moveto x y lineto x y 5 2Bezier B样条曲线的生成 line Vertex 0 x Vertex 0 y Vertex 1 x Vertex 1 y line Vertex 1 x Vertex 1 y Vertex 2 x Vertex 2 y line Vertex 2 x Vertex 2 y Vertex 3 x Vertex 3 y sprintf msg s d s d d s P 0 50 50 outtextxy x0 y0 msg sprintf msg s d s d d s P 1 150 150 outtextxy x1 y1 msg sprintf msg s d s d d s P 2 300 130 outtextxy x2 y2 msg sprintf msg s d s d d s P 3 350 50 outtextxy x3 y3 msg 5 2Bezier B样条曲线的生成 3 运行结果 绘制一三次Bezier曲线段如下图所示 图三次Bezier曲线 5 2Bezier B样条曲线的生成 根据公式 6 绘制Bezier曲线及生成程序 其中 我们就可以绘制Bezier曲线 但是为了得到满意的效果 要反复调整 修改控制点 一般过程先按设计要求用手勾画出一条曲线的草图 然后选定曲线上的几个控制点 绘制Bezier曲线 5 2Bezier B样条曲线的生成 看是否相符合 再调整控制点 修改与手工所作的曲线差异 再按修改后的控制点画Bezier曲线 反复进行 有时还需要增加控制点 直到符合要求为止 上述过程再计算机上进行交互式的绘图很方便 如图 a b c d 所示 图 4 13 a P0 P6 P4 P4 P0 P6 图 4 13 b 5 2Bezier B样条曲线的生成 生成Bezier曲线程序本程序可用来绘制任意个控制点的Bezier曲线 当用户输入控制点的坐标位置后 屏幕显示特征多边形 并生成逼近它的Bezier曲线 如果用户要进行修改 P0 P0 P6 P6 P4 P4 图 4 13 c 图 4 13 d 5 2Bezier B样条曲线的生成 则输入修改顶点序号和新的坐标位置 程序按修改后的控制点绘制Bezier曲线 用户可反复调整 修改直到满意 运行效果如下图所示 图 4 14生成4次Bezier曲线 5 2Bezier B样条曲线的生成 7 Bezier曲线的光滑连接 在几何设计中 一条Bezier曲线往往难以描述复杂的曲线形状 这是由于增加由于特征多边形的顶点数 会引起Bezier曲线次数的提高 而高次多项式又会带来计算上的困难 在实际使用中 一般不超过10次 所以有时采用分段设计 然后将各段曲线相互连接起来 并在接合处保持一定的连续条件 其关键问题是如何保证连接处具有连续性 下面讨论两段Bezier曲线在接点处的连续条件 设两条Bezier曲线分别为n次P t 和m次Q t 相应控制点为Pi i 0 1 n 和Qi i 0 1 m 它们在接点处为Pn Q0 且令如下图所示 5 2Bezier B样条曲线的生成 由Bezier曲线性质可得 5 2Bezier B样条曲线的生成 要保证曲线在连接点处的一阶导数连续 即则由 如图是三次Bezier曲线的连接 其中一条曲线由顶点P1 P2 P3 P4控制 另一条曲线由顶点P4 P5 P6 P7控制 P4是两条曲线的公共顶点 5 2Bezier B样条曲线的生成 当P3 P4 P5三个顶点共线时 这两条三次Bezier曲线就在顶点P4处互相切连接 在切点处具有一阶导数连续性 而P3 P4 P5是它们的公切线 级连续 斜率连续 级连续 位置连续 Pn Q0 条件 条件 5 2Bezier B样条曲线的生成 计算Bezier曲线上的点 可用Bezier曲线方程 但使用deCasteljau提出的递推算法则要简单得多 如图所示 设P0 P02 P2是一条抛物线上顺序三个不同的点 过P0和P2点的两切线交于P1点 在点P02的切线交P0P1和P2P1于P01和P11 则如下比例成立 8 Bezier曲线的递推 deCasteljau 算法 图抛物线三切线定理 这是所谓抛物线的三切线定理 5 2Bezier B样条曲线的生成 当P0 P2固定 引入参数t 令上述比值为t 1 t 即有 图抛物线三切线定理 例如 5 2Bezier B样条曲线的生成 当t从0变到1 第 1 2 式就分别表示控制二边形的第一 二条边 它们是两条一次Bezier曲线 将 1 2 式代入第 3 式得 当t从0变到1时 它表示了由三顶点P0 P1 P2三点定义的一条二次Bezier曲线 记为P02 5 2Bezier B样条曲线的生成 这表明 这二次Bezier曲线P02可以定义为分别由前两个顶点 P0 P1 和后两个顶点 P1 P2 决定的一次Bezier曲线的线性组合 即 同理 由四个控制点定义的三次Bezier曲线P03可被定义为分别由 P0 P1 P2 和 P1 P2 P3 确定的二条二次Bezier曲线的线性组合 如下图所示 图抛物线三切线定理 t从0变到1 5 2Bezier B样条曲线的生成 依次类推 由 n 1 个控制点Pi i 0 1 n 定义的n次Bezier曲线P0n可被定义为分别由前 后n个控制点定义的两条 n 1 次Bezier曲线P0n 1与P1n 1的线性组合 记为 记为 由此得到Bezier曲线的递推计算公式 5 2Bezier B样条曲线的生成 这便是著名的deCasteljau算法 用这一递推公式 在给定参数下 求Bezier曲线上一点P t 非常有效 上式中 Pi0 Pi是定义Bezier曲线的控制点 P0n即为曲线P t 上具有参数t的点 deCasteljau算法稳定可靠 直观简便 可以编出十分简捷的程序 是计算Bezier曲线的基本算法和标准算法 当n 3时 decasteljau算法递推出的Pik呈直角三角形 对应结果如图所示 从左向右递推 最右边点P03即为曲线上的点 5 2Bezier B样条曲线的生成 例子 已知 递推计算公式为 是一个Bezier曲线特征多边形顶点的位置 画出三次Bezier曲线 Step1 假设t 1 3 5 2Bezier B样条曲线的生成 Step2 假设t 1 3 5 2Bezier B样条曲线的生成 Step3 假设t 1 3 同理 可求出当t取为不同值时对应的三次Bezier曲线上的点的坐标 5 2Bezier B样条曲线的生成 这一算法可用简单的几何作图来实现 给定数 就把定义域分成长度为t 1 t 的两段 1 依次对原始控制多边形每一边执行同样的定比分割 所得分点就是第一级递推生成的中间顶点Pi1 i 0 1 n 1 2 对这些中间顶点构成的控制多边形再执行同样的定比分割 得第二级中间顶点Pi2 i 0 1 n 2 3 重复进行下去 直到n级递推得到一个中间顶点P0n即为所求曲线上的点P t 如右所示 图几何作图法求Bezier曲线上一点 n 3 t 1 4 5 2Bezier B样条曲线的生成 注 如右图 4 21所示 4次Bezier曲线的递推算法依次生成的中间顶点序列有三级 如右图 图 4 214次Bezier曲线的递推算法 5 2Bezier B样条曲线的生成
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!