计算贝塞尔曲线的长度

贝塞尔曲线是工业上经常用的一种曲线,经常用用来汽车的外观设计。贝塞尔曲线根据控制点的不同可以分为:

  1. 一阶贝塞尔曲线(2 个控制点)
  2. 二阶贝塞尔曲线(3 个控制点)
  3. 三阶贝塞尔曲线(4 个控制点)
  4. n 阶贝塞尔曲线(n+1 个控制点)

# 二阶贝塞尔曲线

这次讲述的是二阶贝塞尔曲线的长度计算。首先计算曲线的长度之前,我们需要知道曲线的数学方程表达式,由于目前博客还未支持数学表达式的显示,所以我只能帖出wiki 链接 (opens new window)。求曲线的长度,本质上是很难计算出精确值的,但只要近似值的误差绝对小,在实际使用中也是足够的。求曲线的长度本质上是进行定积分的计算。

# 高斯求积

在定积分的数值计算中,高斯求积 (opens new window)可以说是一个精度非常高的公式。

我们只需要把二阶贝塞尔曲线代入高斯求积公式中便可以计算出结果,求积公式的节点个数 n 越大,精度就越高。

不过高斯求积公式中节点个数对应的位置和权重表的计算,我还是没弄明白。

# 代码实现

已经有人给出了代码实现,所以大家可以直接去 Github 上查看bezier.js (opens new window)

并且有详细的解释:Arc length (opens new window)

# 总结

曲线的计算都可以归纳成对定积分的计算,只要知道曲线的数学方程式,就可以使用定积分的数值计算来计算出结果。

# 引用

A Primer on Bézier Curves (opens new window)