33.1 贝塞尔曲线
贝塞尔曲线(Bézier curve)是计算机图形学中最重要的数学曲线之一。 它由法国工程师Pierre Bézier在1960年代为雷诺汽车设计车身时发明, 现已广泛应用于字体设计、矢量图形、动画缓动等领域。
核心概念
阶数:等于控制点数量减1
平滑曲线:天然产生光滑的曲线
33.2 一阶
一阶贝塞尔曲线是最简单的形式,本质上就是两点之间的线性插值(lerp)。 给定两个端点P₀和P₁,以及参数t ∈ [0, 1],曲线上的点B(t)由线性插值公式确定。
lerp函数(线性插值)
33.3 二阶
二阶贝塞尔曲线由3个控制点定义:两个端点P₀、P₂和一个中间控制点P₁。 构造过程是"两次lerp"——先在两对相邻点之间分别插值,再对结果插值。 这种递归结构是De Casteljau算法的核心。
二阶贝塞尔曲线构造
🎯 控制点作用
P₀、P₂是端点,曲线必定通过
P₁是控制点,曲线被"吸引"但不通过
📐 几何性质
曲线在端点处的切线方向指向相邻控制点
所有二阶贝塞尔曲线都是抛物线段
33.4 三阶与高阶
三阶贝塞尔曲线由4个控制点定义,是实践中最常用的形式。 SVG路径、字体轮廓(TrueType、OpenType)、CSS动画缓动函数都基于三阶贝塞尔曲线。 它在平滑性和可控性之间达到最佳平衡。
通用Bernstein多项式公式
其中 C(n,i) = n! / (i!·(n-i)!) 是二项式系数,n是阶数,Pᵢ是控制点。
1阶
2点,直线
2阶
3点,抛物线段
3阶 ⭐
4点,最常用
4阶+
复杂形状
📐 贝塞尔曲线探索器
拖动控制点,观察贝塞尔曲线如何实时变化。调整阶数体验不同复杂度的曲线。
贝塞尔曲线公式
B(t) = Σ C(n,i)·t^i·(1-t)^(n-i)·P_i
n: 阶数 = 2
t: 参数 ∈ [0, 1]
C(n,i): 组合数(二项式系数)
P_i: 控制点坐标
💡 拖动红色控制点改变曲线形状
🎯 端点插值
曲线必定通过首尾控制点P₀和P_n,中间控制点影响形状。
📦 凸包性质
曲线完全位于控制点构成的凸包内,不会超出范围。
🔄 平滑性
贝塞尔曲线天然平滑,广泛应用于字体设计和图形学。
⚙️ 阶数影响
阶数越高,曲线越灵活,但计算成本增加。3阶最常用。
🎨 贝塞尔曲线画廊
随机生成的控制点产生多样化的曲线形态,固定端点从左下到右上
📊 二阶曲线
3个控制点,1个中间点控制弯曲方向
所有曲线都是抛物线段
📈 三阶曲线
4个控制点,可产生S形曲线
SVG、字体设计最常用
🔄 四阶曲线
5个控制点,更复杂的弯曲行为
可能出现自交叉
💡 观察规律:相同阶数但不同控制点位置产生差异巨大的曲线。 中间控制点的位置决定曲线的"拉伸"方向和程度。 曲线颜色从深色(t=0)渐变到浅色(t=1),揭示参数t的行进方向。
33.5 三维空间与RGB色彩
贝塞尔曲线可以扩展到三维空间。当我们将3D坐标(x, y, z)同时解释为RGB颜色值时, 贝塞尔曲线不仅定义了空间路径,更创造了平滑的颜色渐变。
🎨 颜色即坐标
起点 [0,0,0] = 黑色
终点 [1,1,1] = 白色
中间控制点 = 随机RGB值
曲线颜色 = 当前坐标
📊 阶数与复杂度
1阶:黑→白直接渐变
2阶:经过1个中间色
3阶+:复杂的颜色过渡路径
💡 示例:黑色 → 紫色 → 白色的贝塞尔颜色渐变路径
33.6 鸢尾花曲线
鸢尾花曲线是贝塞尔曲线的艺术应用典范。通过叠加数百条三阶贝塞尔曲线, 每条曲线的控制点由连续变化的角度参数化(使用椭圆坐标), 配合从深蓝到浅蓝的渐变色谱和透明度,创造出类似鸢尾花花瓣的优雅图案。
📐 控制点公式
X = [0, A₁·cos(θ₁), A₂·cos(θ₂), cos(θ₃)]
Y = [0, B₁·sin(θ₁), B₂·sin(θ₂), sin(θ₃)]
A、B是椭圆参数,θ连续变化产生平滑过渡
🌸 鸢尾花曲线
叠加数百条三阶贝塞尔曲线,通过连续变化的角度参数创造优雅的花瓣图案
🔧 参数说明
- • 曲线阶数:3阶(4个控制点)
- • 起点:固定在圆心(0,0)
- • 控制点:椭圆参数化 (A·cos(θ), B·sin(θ))
- • 角度:3组连续变化的θ₁, θ₂, θ₃
- • 颜色:深蓝到浅蓝渐变
- • 透明度:0.3,增强层次感
🎨 算法艺术
简单数学规则 + 连续参数变化 = 复杂美丽图案
体现了"简单规则产生复杂行为"的哲学
📐 椭圆参数化
控制点位置由椭圆方程确定
A、B参数控制椭圆的扁平程度
🌀 连续性
角度θ连续变化产生平滑过渡
相邻曲线之间形成自然的层次
💡 创作灵感:基于Oliver Brotherhood的开源设计。通过调整随机种子可以生成无限多种独特的鸢尾花图案。 每个图案都是由数学公式精确计算的,却展现出有机的自然美感——这正是算法艺术的魅力所在。
🎯 核心洞察与应用
数学之美
- 递归构造:从lerp到任意阶曲线
- 端点插值:曲线必定通过首尾点
- 凸包性质:曲线不会超出控制点范围
- 变差缩减:曲线比控制多边形更平滑
实际应用
- 字体设计:TrueType/OpenType轮廓
- 矢量图形:SVG路径、Illustrator
- 动画缓动:CSS cubic-bezier()
- 算法艺术:鸢尾花曲线等生成艺术
设计哲学: 贝塞尔曲线的核心思想是"递归线性插值"——通过反复应用最简单的lerp操作, 构造出任意复杂度的曲线。这种从简单到复杂的递归构造方式, 不仅数学优雅,更便于计算机实现。今天你看到的每个字母、每个图标, 背后都有贝塞尔曲线的身影。