
三阶贝塞尔 vs 赫米特曲线:原理、公式与工程统一理解
上一篇:
在动画系统、路径插值、Unity 曲线编辑器中,我们经常会接触两种看似不同的曲线:
- 三阶贝塞尔曲线(Cubic Bezier)
- 赫米特曲线(Hermite Curve)
很多人会有疑问:
它们到底是不是一回事?
为什么 Unity 用"切线",而不是控制点?
本篇笔记将从几何直觉 → 数学公式 → 转换关系完整讲清楚。
一、三阶贝塞尔曲线(Cubic Bezier)
1.1 定义
三阶贝塞尔曲线由 四个控制点定义:
- (P_0):起点
- (P_1):起点控制点
- (P_2):终点控制点
- (P_3):终点
1.2 公式

1.3 几何意义
控制点作用
- (P_1):控制起点的"出发方向"
- (P_2):控制终点的"进入方向"
曲线通常不会经过 P1 和 P2
1.4 切线性质(关键)

重要结论:
控制点本质是在控制"切线(导数)"
二、赫米特曲线(Hermite Curve)
2.1 定义
赫米特曲线使用:
- 两个点
- 两个切线
定义:
- (P_0):起点
- (P_1):终点
- (T_0):起点切线
- (T_1):终点切线
2.2 公式(标准形式)

2.3 基函数

2.4 几何意义
赫米特曲线的控制方式:
用"方向 + 速度"控制曲线
- (T_0):控制起点"走出去的方向和速度"
- (T_1):控制终点"进入的方式"
三、两者的本质关系(核心)
3.1 结论先说
三阶贝塞尔曲线 = 赫米特曲线(完全等价)
只是表达方式不同:
| 表达方式 | 参数 |
|---|---|
| Bezier | 4 个点 |
| Hermite | 2 点 + 2 切线 |
3.2 从贝塞尔 → 赫米特
已知:
- (P_0, P_1, P_2, P_3)
根据导数:

3.3 从赫米特 → 贝塞尔
已知:
- (P_0, P_3, T_0, T_1)
反推控制点:

3.4 一个非常重要的理解
控制点 = 切线信息的几何表达
切线 = 控制点的导数表达
四、统一视角:三次多项式
无论是:
- Bezier
- Hermite
本质都是:

只是"基函数不同"
4.1 三种常见基
| 曲线 | 基函数 |
|---|---|
| Bezier | Bernstein |
| Hermite | Hermite Basis |
| 多项式 | 幂函数 |
三者可以互相转换
五、为什么 Unity 使用 Hermite?
Unity 的 AnimationCurve 使用:
Keyframe + inTangent / outTangent
本质就是:
Hermite 曲线
原因:
更符合动画逻辑
- x = time
- y = value
切线:

完全符合"动画变化率"
更易编辑
- 拖拽斜率比拖控制点更直观
- 自动平滑(Auto Tangent)
更适合连续曲线
Hermite 更容易保证:
- C1 连续(切线连续)
- 平滑过渡
六、工程应用对比
6.1 Bezier 常见场景
- SVG / 矢量图
- UI Path
- 曲线绘制
- 字体(PostScript)
6.2 Hermite 常见场景
- Unity AnimationCurve
- 游戏插值系统
- 相机轨迹
- 物理模拟
小结
-
三阶贝塞尔和赫米特是完全等价的两种表达
-
贝塞尔用"控制点",赫米特用"切线"
-
本质都是三次多项式插值