计算二次贝塞尔曲线段的长度

pep*_*dip 5 math bezier

我用这个算法来计算二次贝塞尔曲线的长度:http: //www.malczak.linuxpl.com/blog/quadratic-bezier-curve-length/

但是,我想要做的是计算贝塞尔曲线的长度,从0到t,其中0 <t <1

有没有办法修改上面链接中使用的公式来获得贝塞尔曲线的第一段的长度?

为了澄清,我不是在寻找q(0)和q(t)之间的距离,而是寻找这些点之间的弧长.

(我不希望使用自适应细分来使长度近似)

Mic*_*son 7

由于我确信该变量t案例存在类似的表单解决方案- 我扩展了链接中给出的解决方案.

从链接中的等式开始:

L(t)的

我们可以写作哪个

L(t)的

哪里b = B/(2A)c = C/A.

然后变换u = t + b我们得到

L(t)的

哪里 k = c - b^2

现在我们可以使用链接中的整数标识来获取:

L(t)的

因此,总之,所需的步骤是:

  1. 按原方程计算A,B,C.
  2. 计算b = B/(2A)c = C/A
  3. 计算u = t + bk = c -b^2
  4. 将这些值插入上面的等式中.

  • 来自谷歌缓存:`A = 4(a_x ^ 2 + a_y ^ 2)``B = 4(a_x b_x + a_y b_y)``C = b_x ^ 2 + b_y ^ 2`其中`a = P_0 - 2 P_1 + P_2`和`b = 2P_1 - 2 P_0` (2认同)