2026-05-30

Bézier-curve

1. Bézier
	1.1 应用
	1.2 复合贝塞尔曲线
	1.3 有理贝塞尔曲线 Rational Bézier curves
	1.4 Degree 阶数与控制点
	1.5 Bézier 曲线示意图
2. B-spline
3. NURBS

 以下是维基百科笔记,更详细的内容请看各章开头的维基百科链接。

1. Bézier

Bézier curve 贝塞尔曲线(/ˈbɛz.i.eɪ/,法语发音:[ bezje ] )是一种参数曲线,广泛应用于计算机图形学及相关领域。
一组离散的“控制点”通过公式定义了一条光滑连续的曲线。
贝塞尔曲线以法国工程师皮埃尔·贝塞尔(Pierre Bézier,1910-1999)的名字命名,他在20世纪60年代将其用于雷诺汽车车身曲线的设计。贝塞尔曲线于1962年,由皮埃尔·贝兹所广泛发表。
贝塞尔曲线最初由保尔·德·卡斯特里奥于1959年运用德卡斯特里奥算法开发,以稳定数值的方法求出贝塞尔曲线。

通常,贝塞尔曲线用于近似现实世界中没有数学表示、表示方法未知或过于复杂的形状。
贝塞尔曲线可以组合形成贝塞尔样条曲线 Bézier spline,也可以推广到更高维度形成贝塞尔曲面 Bézier surfaces。
更高维度的广泛化贝塞尔曲线就称作贝兹曲面,其中贝兹三角 Bézier triangle 是一种特殊的实例。

1.1 应用

  • 电脑绘图,贝塞尔曲线是矢量图形 vector graphics 文件和相应软件(如PostScript、PDF等)能够处理的唯一曲线,用于光滑地近似其他曲线。
  • 电脑动画,贝塞尔曲线常用于定义 3D 路径以及用于关键帧插值的 2D 曲线,应用程序会创建物体沿该路径运动所需的帧。。
  • 贝塞尔曲线现在非常常用于控制CSS、JavaScript、JavaFX和Flutter SDK中的动画缓动效果。
  • 机器人技术,例如,焊接臂的运动应该平稳,以避免不必要的磨损。
  • 字体
    • TrueType字体使用由二次贝塞尔曲线组成的复合贝塞尔曲线。
    • 其他语言和图像工具(例如PostScript、Asymptote、Metafont和SVG)使用由三次贝塞尔曲线组成的复合贝塞尔曲线来绘制曲线形状。
    • OpenType字体可以使用任何类型的曲线,具体取决于 OpenType 封装器所采用的字体技术。

1.2 复合贝塞尔曲线

高阶曲线的计算成本更高。当需要更复杂的形状时,可以将低阶贝塞尔曲线拼接在一起,生成复合贝塞尔曲线。
在矢量图形语言(如PostScript)、矢量图形标准(如SVG)和矢量图形程序(如Artline、Timeworks Publisher、Adobe Illustrator、CorelDraw、Inkscape和Allegro)中,复合贝塞尔曲线通常被称为“路径”path。
路径不受栅格化图像的限制,并且易于修改。

转换
对贝塞尔曲线进行扫描转换(栅格化)的最简单方法是在多个紧密排列的点上评估曲线,然后对近似的线段序列进行扫描转换。
然而,这种方法并不能保证栅格化输出足够平滑,因为点之间的间距可能过大。
反之,在曲线接近直线的区域,这种方法可能会生成过多的点。

1.3 有理贝塞尔曲线 Rational Bézier curves

有理贝塞尔曲线通过添加可调节的权重来更精确地逼近任意形状。该权重定义了该点对曲线的“吸引力”。
其分子是加权伯恩斯坦形式的贝塞尔曲线,分母是伯恩斯坦多项式的加权和。
有理贝塞尔曲线的用途之一是精确表示圆锥曲线的线段,包括圆弧。
普通贝塞尔曲线是有理贝塞尔曲线的一种特殊情况,其中所有权重都相等。
有理贝塞尔曲线为设计者提供了更多选择,但代价是算法更复杂,需要跟踪更多数据。

1.4 Degree 阶数与控制点

  • Bézier 曲线的控制点,可以理解为端点,但只有2头的端点作为曲线的起始和终止点,其他中间端点通常不在曲线上。
  • Bézier 曲线的Degree 阶数,或翻译为次数,这里的“次”指的是用于贝塞尔曲线的多项式混合函数中的最高指数。

贝塞尔曲线可以是任意次数的。一次曲线是一条简单的直线,有两个控制点。
二次曲线是一条圆弧,有三个控制点。次数越高,控制点越多,可以绘制出越复杂的形状。
但同时,由于每个控制点都会影响整条曲线,因此使用起来也更加困难。

1.5 Bézier 曲线示意图

控制点 Degree 阶数 Gif 补充说明 Bézier/贝塞尔/贝兹 构造描述
2 一阶 / 线性
linear /
First-order
直线 line 随时间变化(0~1) 从控制点1向控制点2移动描绘出的曲线。
3 二 阶/次
quadratic /
Second-order
抛物线 parabola
圆锥弧 conic arcs
字体: TrunType
设置2个随时间移动的中间点,
模拟2段随时间变化的线性曲线.
4 三 阶/次
cubic /
Third-order
字体: PostScript, Metafont, SVG… 设置3个随时间移动的中间点,
模拟出随时间变化的2次曲线,
再在模拟的2次曲线上:
(…重复二阶的动态构造过程…)
5 四 阶/次
quartic /
fourth-order
Higher-order
高阶曲线
计算成本更高!
使用更加困难!
(只能全局修改)
牵一发而动全身
设置4个随时间移动的中间点,
模拟出随时间变化的3次曲线,
再在模拟的3次曲线上:
(…重复三阶的动态构造过程…)
6 五 阶/次
fifth-order
设置5个随时间移动的中间点,
模拟出随时间变化的4次曲线,
再在模拟的4次曲线上:
(…重复四阶的动态构造过程…)

(运动轨迹使用德卡斯特里奥算法计算)
每个控制点都会影响整条曲线,图上可看出,曲线轨迹会受到所有控制点的影响。
如上,使用递归降阶的方式动态计算描绘出曲线,阶数越高计算量越高,因此,最常用的是2阶和3阶。
更高阶的需求会使用多段低阶曲线组合成复合曲线,比如B样条。

2. B-spline

B样条的概念可以追溯到19世纪,当时尼古拉·罗巴切夫斯基在俄罗斯喀山大学探索了类似的想法 ,尽管“B样条”一词是由艾萨克·雅各布·勋伯格于1967年创造的,反映了它们作为基函数的作用。

B样条曲线广泛应用于计算机辅助设计(CAD)和计算机图形学等领域,使用等距节点 equidistant knots,通过一组控制点来塑造曲线和曲面;此外,它还可用于数据分析,例如曲线拟合和实验数据的数值微分。
从汽车车身设计到噪声测量数据的平滑处理,B样条曲线提供了一种灵活且精确地表示复杂形状和函数的方法。

De Boor算法是一个数值上稳定的计算B样条的方法。
术语 B-spline B样条是Isaac Jacob Schoenberg创造的,B 是基础(basis)样条的缩写。

B样条曲线由多个贝塞尔弧组成,并提供了一种统一的机制来定义连接处的连续性。
B样条曲线利用外部条件将多个曲线段连接起来,同时保留控制点的原始概念。
相邻曲线共享一些控制点。外部条件可以是隐式的(均匀曲线),也可以由节点向量显式给出。
节点向量定义了相邻曲线(线段)之间应该共享多少信息。
使用多段低阶Bézier组合的方式,既解决了贝塞尔曲线只能全局修改的缺陷,也解决了高阶贝塞尔需求更多资源计算的问题。

3. NURBS

Non-uniform rational basis spline 非均匀有理B样条 ( NURBS ) 是一种使用 basis splines (B-splines)(B样条)的数学模型,常用于计算机图形学中表示曲线和曲面。
它在处理解析形状(由常用数学公式定义)和建模形状方面都具有极高的灵活性和精确性。
它是一种曲线建模方法,与多边形建模或数字雕刻不同。
NURBS 曲线广泛应用于计算机辅助设计(CAD)、计算机辅助制造(CAM) 和计算机辅助工程(CAE )领域。
它们是众多行业标准(例如IGES、STEP、ACIS和PHIGS)的组成部分。
各种3D 图形、渲染和动画软件 都提供了用于创建和编辑 NURBS 曲面的工具。

它们既能被计算机程序高效处理,又能方便人机交互。
NURBS曲面是两个参数的函数,映射到三维空间中的一个曲面。
曲面的形状由控制点决定。NURBS曲面可以紧凑地表示简单的几何形状。
T-样条和细分曲面 (T-splines, subdivision surfaces) 更适合于复杂的有机形状, 因为和 NURBS 曲面相比,它们可以将控制点的数量减少一半。

一般来说,编辑 NURBS 曲线和曲面是直观且可预测的。
控制点要么直接连接到曲线或曲面,要么就像用橡皮筋连接一样。
根据用户界面的类型,NURBS 曲线和曲面的编辑可以通过控制点(类似于贝塞尔曲线)进行,也可以通过样条建模和分层编辑等更高级的工具进行。

NURBS 曲线由其阶数、一组加权控制点和一个节点向量定义。
NURBS 曲线和曲面是 B样条和贝塞尔曲线和曲面的推广,主要区别在于控制点的加权,这使得 NURBS 曲线是有理数的。

NURBS曲线和曲面有很多用途:
  • 对于给定的阶数,NURBS 集合在仿射变换下是不变的: 可以通过对 NURBS 曲线和曲面的控制点应用旋转和平移等操作来对它们进行变换。
  • 它们为标准解析形状(例如圆锥曲线)和自由形状提供了一种通用的数学形式。
  • 它们提供了设计各种形状的灵活性。
  • 与更简单的方法相比,它们可以减少存储形状时的内存消耗。
  • 它们可以通过数值稳定且精确的算法进行相当快速的评估。
  • 这里,NURBS 主要在一维(曲线)中讨论;它可以推广到二维(曲面)甚至更高维度。
  • 是非有理B样条和非有理和有理贝兹曲线和曲面的推广。

没有评论:

发表评论

Bézier-curve

导航 (返回顶部) 1. Bézier 1.1 应用 1.2 复合贝塞尔曲线 1.3 有理贝塞尔曲线 Rational Bézier curves 1.4 Degree 阶数与控制点 1.5 Bézier 曲线示意图 2. B-spline 3. NURBS ...