1. 平面参数曲线的曲率定义
对于平面曲线 r(t) = (x(t), y(t)),其曲率 κ(t) 为:
κ(t) = |x′(t)·y″(t) − y′(t)·x″(t)| / [x′(t)² + y′(t)²]^(3/2)
2. 三次 Bezier 曲线的导数表达式
给定控制点 P₀, P₁, P₂, P₃(每个为二维点),定义:
A = 3(P₁ − P₀)
B = 6(P₂ − 2P₁ + P₀)
C = 6(P₃ − 3P₂ + 3P₁ − P₀)
则:
r′(t) = A + B·t + (1/2)·C·t²
r″(t) = B + C·t
将 r′(t) = (x′(t), y′(t)),r″(t) = (x″(t), y″(t)) 代入曲率公式。
3. 曲率极值的必要条件(无绝对值处理)
令分子(有向曲率)为:
N(t) = x′(t)·y″(t) − y′(t)·x″(t)
令速度平方为:
S(t) = x′(t)² + y′(t)²
则曲率 κ(t) = |N(t)| / S(t)^(3/2)
为求极值,对 κ(t) 求导并令导数为零。等价于求解以下方程(当 N(t) ≠ 0 时):
N′(t)·S(t) − 3·N(t)·[x′(t)·x″(t) + y′(t)·y″(t)] = 0
该方程是关于 t 的多项式方程(三次 Bezier 曲线下最高为 5 次),需在区间 [0, 1] 内数值求解。
4. 实用计算步骤(三次 Bezier)
-
计算差分向量:
d₀ = P₁ − P₀
d₁ = P₂ − P₁
d₂ = P₃ − P₂
-
速度向量(一阶导数):
v(t) = 3[(1−t)²·d₀ + 2(1−t)t·d₁ + t²·d₂]
-
加速度向量(二阶导数):
a(t) = 6[(1−t)(d₁ − d₀) + t(d₂ − d₁)]
-
曲率分子:
N(t) = vₓ(t)·aᵧ(t) − vᵧ(t)·aₓ(t)
-
构造极值方程:
F(t) = N′(t)·[vₓ(t)² + vᵧ(t)²] − 3·N(t)·[vₓ(t)·aₓ(t) + vᵧ(t)·aᵧ(t)] = 0
-
求解 F(t) = 0 在 t ∈ [0, 1] 的实根,并与端点 t = 0, 1 一起比较 κ(t),得到曲率最大值和最小值。
5. 二次 Bezier 曲线(简化情形)
控制点:P₀, P₁, P₂
速度:
v(t) = 2[(1−t)(P₁ − P₀) + t(P₂ − P₁)]
加速度(常数):
a = 2(P₂ − 2P₁ + P₀)
曲率分子 N(t) 是 t 的一次函数,S(t) 是 t 的二次函数,极值方程 F(t) = 0 退化为一个三次多项式,可解析或数值求解。