贝塞尔曲线

公式

P(t)=∑i=0n−1PiBi,n(t)(1)\mathbf{P}(t) = \sum_{i=0}^{n-1}\mathbf{P}_{i}B_{i,n}(t) \tag{1} P(t)=i=0∑n−1​Pi​Bi,n​(t)(1)
其中:
Bi,n(t)=Cniti(1−t)n−i(2)B_{i,n}(t) = C_{n}^{i}t^{i}(1-t)^{n-i} \tag{2} Bi,n​(t)=Cni​ti(1−t)n−i(2)

B-Spline曲线

产生的背景: 贝塞尔曲线两大缺点1.阶次随着控制点数增加而线性增加,2.改变单个控制点会影响整个曲线

公式

P(t)=∑i=0n−1PiBi,d(t)(3)\mathbf{P}(t) = \sum_{i=0}^{n-1}\mathbf{P}_{i}B_{i,d}(t) \tag{3} P(t)=i=0∑n−1​Pi​Bi,d​(t)(3)
其中:
Bi,d(t)=u−uiui+d−1−uiBi,d−1(t)+ui+d−uui+d−ui+1Bi+1,d−1(t)(4)B_{i,d}(t) = \frac{u-u_{i}}{u_{i+d-1}-u_{i}}B_{i,d-1}(t) + \frac{u_{i+d}-u}{u_{i+d}-u_{i+1}}B_{i+1,d-1}(t) \tag{4} Bi,d​(t)=ui+d−1​−ui​u−ui​​Bi,d−1​(t)+ui+d​−ui+1​ui+d​−u​Bi+1,d−1​(t)(4)
式(4)中的 Bi,d(t)B_{i,d}(t)Bi,d​(t) 的初值由下式(5)计算:
Bi,0(t)={1ti⩽t⩽ti+10other(5)B_{i,0}(t) = \left\{\begin{matrix} 1 && t_{i} \leqslant t \leqslant t_{i+1}\\ 0 && other \end{matrix}\right. \tag{5} Bi,0​(t)={10​​ti​⩽t⩽ti+1​other​(5)
上式(5)中的 [ti,ti+1][t_{i},t_{i+1}][ti​,ti+1​] 为相邻节点区间,根据该区间是否是相同的可将B样条曲线分为均匀样条和非均匀样条。

性质

说明: 下面图像中 NNN 指代上面公式中的 BBB,uuu 指代上面公式中的 ttt ,假设阶次 d=3d=3d=3 ,由公式(4)和(5)的递推关系可得下图

从左图中可以看出 N1,3N_{1,3}N1,3​在节点区间[u1,u5)[u1, u5)[u1,u5)中非零,基函数 N1,3N_{1,3}N1,3​最后是要与控制点P1\mathbf{P}_{1}P1​相乘,因此可知控制点只在区间[u1,u5)[u1, u5)[u1,u5)内有效,于是可获得性质1: 基函数Ni,pN_{i,p}Ni,p​只在节点区间[ui,ui+p+1)[u_{i},u_{i+p+1})[ui​,ui+p+1​)不为0,通俗解释就是控制点Pi\mathbf{P}_{i}Pi​只在节点区间[ui,ui+d+1)[u_{i},u_{i+d+1})[ui​,ui+d+1​)内被用上。
从右图可以看出在节点区间[u3,u4)[u_{3},u_{4})[u3​,u4​)上有N0,3,N1,3,N2,3,N3,3N_{0,3},N_{1,3},N_{2,3},N_{3,3}N0,3​,N1,3​,N2,3​,N3,3​ 四个基函数非零,于是可获得性质2: 在区间[ui,ui+1][u_{i},u_{i+1}][ui​,ui+1​]上最多有(d+1)(d+1)(d+1)个ddd次基函数非零,通俗解释就是在区间[ui,ui+1][u_{i},u_{i+1}][ui​,ui+1​]上只有Pi−d,......Pi\mathbf{P}_{i-d},......\mathbf{P}_{i}Pi−d​,......Pi​这些控制点被用上。

优点:

1.可指定阶次d
2.改变单个控制点只影响局部曲线段

参考

上面内容只是做了个简单的笔记,详细内容可参考下面的链接:
详解样条曲线(上)(包含贝塞尔曲线)
深入理解B样条曲线
贝塞尔曲线
在B-spline中,如何理解knot和breakpoint?彼此之间联系和区别是什么?
Toeplitz Matrix 表达 B 样条的 basis functions

贝塞尔曲线和B样条曲线相关推荐

  1. 贝塞尔曲线与B样条曲线

    文章目录 0.参考 1.问题起源与插值法的曲线拟合 1.1.问题起源 1.2.拉格朗日插值 1.3."基"的概念 1.4.插值存在的Runge现象 2.贝塞尔曲线 2.1.控制点的 ...

  2. 多项式曲线——搞清楚贝塞尔曲线、B样条曲线、Nurbs曲线的区别

    多项式曲线--搞清楚贝塞尔曲线.B样条曲线.nurbs曲线的区别 贝塞尔曲线 Bezier曲线定义 Bernstein基函数的性质 Bezier曲线的性质 B样条曲线 B样条曲线定义 B样条基函数的性 ...

  3. 咸鱼菌玩3D—样条曲线和贝塞尔曲线

    咸鱼菌玩3D-样条曲线和贝塞尔曲线 多线段 样条曲线 贝塞尔曲线 123D提供了 多段线和 样条曲线两种自由绘制工具,而后者比前者更加灵活自由,能够绘制更复杂的形状. 在设计领域中有一种被称作 贝塞尔 ...

  4. 贝塞尔曲线,B-样条,非均匀有理B样条梳理

    文章目录 1. 贝塞尔曲线(Bézier curve) 1.1 一阶贝塞尔曲线 1.2 二阶贝塞尔曲线.高阶贝塞尔曲线 1.3 贝塞尔曲线的一般形式 1.4 贝塞尔曲线的性质 1.5 贝塞尔曲线在运动 ...

  5. 样条曲线(下)之插值问题(贝塞尔曲线、B样条和一般样条曲线插值)

    贝塞尔曲线插值与B样条插值 前言: 这篇是"样条曲线"的接续,前面主要集中在了理论部分,这篇文章主要内容是贝塞尔曲线与B样条是如何应用到插值中的. 前篇:样条曲线 文章目录 贝塞尔 ...

  6. android离散点贝塞尔曲线,离散点拟合曲线贝塞尔曲线B样条.ppt

    离散点拟合曲线贝塞尔曲线B样条 第三章 离散点绘制平面曲线;;不规则曲线(拟合曲线):指已知平面一些离散点的坐标,但曲线方程未知,需要人为设计曲线方程对这些点进行拟合形成的曲线.; 在用拟合方法建立曲 ...

  7. css贝塞尔曲线 多个点_贝塞尔曲线实践

    贝塞尔曲线: 贝塞尔曲线本质上是由线段和节点组成的,形象的说节点是可拖动的支点,线段像可伸缩的皮筋.一个常规的曲线往往由4个控制点构成(p0,p1,p2,p3),曲线经过起点(p0)和终点(p1). ...

  8. 光滑曲线_计算机图形学十:贝塞尔曲线与贝塞尔曲面

    贝塞尔曲线与贝塞尔曲面 1 贝塞尔曲线(Bézier Curves) 在进入具体原理讲解之前,首先看一下一条实际的贝塞尔曲线长什么样子 其中 为 控制点,蓝色所表示曲线正是非常著名的贝塞尔曲线了,可以 ...

  9. 贝塞尔曲线与贝塞尔曲面

    1. 贝塞尔曲线(Bézier Curves) 在进入具体原理讲解之前,首先看一下一条实际的贝塞尔曲线长什么样子 其中为控制点,蓝色所表示曲线正是非常著名的贝塞尔曲线了,可以从图中观察到,曲线会与初始 ...

  10. 【CAD算法】【计算机图形学】Bezier贝塞尔曲线生成程序(python/numpy实现)[1]

    整个项目,从Bezier曲线的创建,到Coons Patch曲面的实现,再到网格的实现和优化,还有最后对表面的光顺,链接如下: [CAD算法][计算机图形学]Bezier贝塞尔曲线生成程序(pytho ...

最新文章

  1. Kali Linux安装中文输入法
  2. Android7.1图标快捷方式(AppShortcuts)实现Demo
  3. 都说程序员加班很严重,来听听国外的程序员怎么说
  4. linux启动顺序怎么修改,怎样修改启动顺序?
  5. flash as3与后台php交互用户注册例子,as3与PHP后台交互2
  6. 【华为云技术分享】一文带你了解Web前端发展历程
  7. 暴风集团否认暴风TV公司解散:融资事项正在加紧推进中
  8. 数据库服务器操作系统查询命令行,MySQL命令行客户端命令
  9. JavaScript 对象和字串之间的转换
  10. HTML和CSS 基本要点必看
  11. 在类库中使用Session
  12. Ubuntu 16.04 安装搜狗输入法
  13. 网页版迅雷离线下载过程分析
  14. Blender简单建模
  15. VR全景制作教程|VR全景拍摄和制作竟如此简单
  16. Bluetooth core 5.0 ---------- BR/EDR 安全简单配对(BR/EDR secure simple pairing)
  17. Notion为什么能让我放弃手账
  18. 逆向学习实战之--替换哈罗单车图片
  19. BigDecimal 金额转换
  20. Android View - RemoteViews

热门文章

  1. WordPress教程网站
  2. matlab 图案 柱状图_如何用matlab画柱形图 - 卡饭网
  3. 同一服务器不同端口网页,Apache Web服务器,在同一服务器上的不同端口上的多个应用程序...
  4. aviary 图片编辑器
  5. 有c语言基础自学JAVA要多久,零基础学java需要多久?要先学习C语言吗?
  6. 你知道 biangbiang 面和编码有什么关系吗?万字长文,手拉手带你一步步认识编码
  7. js12---闭包,原型,继承
  8. c++国际象棋上的麦粒
  9. python进阶高级技能:Python退火算法在高次方程的应用
  10. 警告: A docBase inside the host appBase has been specified, and will be ignore