使用黄金分割法计算点到 Bézier 曲线最短距离的方法
2026/4/12 20:25:22 网站建设 项目流程

1. 问题建模

给定一个固定点P,以及一条 n 阶 Bézier 曲线:

B(t) = Σ(从 i=0 到 n)Pᵢ · Bᵢ,ₙ(t), t ∈ [0, 1]

其中:

  • Pᵢ 是第 i 个控制点(向量),
  • Bᵢ,ₙ(t) = C(n, i) · tⁱ · (1 − t)ⁿ⁻ⁱ 是 Bernstein 基函数,
  • C(n, i) = n! / (i! (n−i)!) 为二项式系数。

定义目标函数为点P到曲线上点B(t) 的欧氏距离的平方(避免开方以提升效率):

f(t) = ‖B(t) −P‖² = (B(t) −P) · (B(t) −P)

目标是求解:

t* = argmin f(t), t ∈ [0, 1]

2. 黄金分割法(Golden Section Search)

黄金分割法适用于在闭区间 [a, b] 上寻找单峰函数的极小值点。设黄金比例常数为:

φ = (√5 − 1) / 2 ≈ 0.6180339887

算法步骤如下:

  1. 初始化区间:a₀ = 0,b₀ = 1
  2. 计算两个内点:
    c = b − φ · (b − a)
    d = a + φ · (b − a)
  3. 计算函数值:f(c) 和 f(d)
  4. 迭代更新区间:
    - 若 f(c) < f(d),则极小值在 [a, d],令 b ← d
    - 否则,极小值在 [c, b],令 a ← c
  5. <

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询