ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

games(101)-贝塞尔曲线

2022-04-17 17:01:04  阅读:212  来源: 互联网

标签:zier curve 曲线 贝塞尔 控制点 games b1 101


Curves (Lecture 11)

内容:

  • Bézier curve(贝塞尔曲线)

  • Evaluating Bézier curve

    • De Casteljau's algorithm(德卡斯特里奥算法)
    • Algebraic Formula
  • Piecewise Bézier Curves

    • Continuity
  • B-splines etc

Bézier curve

  • 用一系列控制点定义某一个曲线,并且这个曲线要满足一定性质

avatar

例如:曲线从p0 开始 ,开始的时候切线沿着p0到p1,在p3结束,结束的切线是p2 p3方向。系数与代数表达有关,曲线不要求经过所有控制点,只要求经过起止点。

  • 三个控制点生成的贝塞尔曲线称为二次贝塞尔曲线(quadratic Bezier)

Evaluating Bézier curve

De Casteljau's algorithm

  • 如何画:
    • 定义起始点对应时间t = 0,终止点对应时间t = 1
    • 画曲线实则要找到任意时间t找出这个点在平面的哪个位置
    • De Casteljau's algorithm就是找这个点
    • 将画一整个曲线的问题转换为找一个点的问题
    • 德卡斯特里奥算法就是怎么样找这个点

avatar

  • 具体算法:

    • 三个点形成了两个线段,方向认为是点的输入次序决定
    • 在b0到b1上,认为b0为时间0,b1为时间t,找到对应t时刻的点b0_1(插值)
    • 同样在b1到b2上,认为b1为时间0,b2为时间t,找到与b0~b1相同的t时刻对应的点b1_1
    • 得到两个点连起来形成了一条线段(比最开始少一条)
    • 在这条线段上同样找对应时间t的点,那么这个点就是贝塞尔曲线上的一个点
    • 理论上取所有t的值就可以得到贝塞尔曲线,即使t是连续的

avatar

avatar

avatar

显式表示:通过参数t定义

Algebraic Formula

代数的表示方法:
avatar

不断的线性插值,将其表示出来:

avatar

类似于某个展开式

avatar

  • 给出n+1个控制点(0,1,.....,n)对应n阶的Bézier curve
  • Bézier curve曲线在任意时间t(对应一个点的表达),都是之前控制点的线性组合,组合的系数就是一个与时间有关的多项式(伯恩斯坦多项式)
  • 限制点也可以在空间中,得到空间中的贝塞尔曲线,只需要输入控制点用伯恩斯坦多项式进行插值。
  • 同一阶上,系数加起来为1
  • 定义与时间有关的多项式,对不同的控制点进行插值,得到新的定义在曲线上的点

根据展开式得到相关的性质

avatar

  • 规定贝塞尔曲线一定过起点、终点、t=0时在起点、t=1在终点
  • 规定了三次贝塞尔曲线一开始起始的切线方向,以及结束时的切线方向,前面的系数与控制点有关
  • 对不同的顶点做仿射变换(线性变换+平移),变换后控制点画出的贝塞尔曲线与原始控制点得到的贝塞尔曲线画出的曲线是一样的,投影变换就不一定了
  • 凸包性质、画出的贝塞尔曲线一定在控制点形成的凸包内。

avatar
凸包:

能够包围给定的几何形体的最小凸多边形(如果把一个多边形的所有边中,任意一条边向两方无限延长成为一直线时,其他各边都在此直线的同旁,那么这个多边形就叫做凸多边形)。

Piecewise Bézier Curves

  • 控制点过多时 ,对贝塞尔控制效果不明显,故有时候采用逐段定义的贝塞尔曲线(习惯四个控制点)。

avatar

Continuity

  • 第一种连续:第一段的终点对应第二段的起点的一种连续(几何上挨在一块)

avatar

  • 第二种连续:在公共点出的切线连续,即一阶导数的连续

avatar
两个控制点距离公共点的距离一样,共线、方向相反

仍有更高阶的连续,例如曲率连续。对应不同连续性的要求

Other types of splines

Spline(样条)

定义如下:

avatar

简单的说,一个可控的曲线

B-Spline

avatar

  • 缩写,对应的基函数样条,例如上面的伯恩斯坦多项式可以理解为基函数(用伯恩斯坦多项式在t下的用不同的项对控制点进行平均)

  • 基函数 就是一个函数的固定形式,也就是函数只会在这个函数的基础上变化,而不会丢掉的函数

  • 对贝塞尔曲线的拓展,局部性,动一个控制点能知道控制点影响到曲线的哪些部分。

avatar

课程:games101

标签:zier,curve,曲线,贝塞尔,控制点,games,b1,101
来源: https://www.cnblogs.com/lcgh/p/16156330.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有