6

このアルゴリズムを使用して、2次ベジェの長さを計算します:http: //www.malczak.linuxpl.com/blog/quadratic-bezier-curve-length/

ただし、私がやりたいのは、0からtまでのベジェの長さを計算することです。ここで0 <t <1

上記のリンクで使用されている式を変更して、ベジェ曲線の最初のセグメントの長さを取得する方法はありますか?

明確にするために、私はq(0)とq(t)の間の距離ではなく、これらの点の間を通る弧の長さを探しています。

(長さを近似するためにアダプティブサブディビジョンを使用したくありません)

4

3 に答える 3

8

その変数の場合にも同様の形式のソリューションが存在すると確信していたのでt、リンクに示されているソリューションを拡張しました。

リンクの方程式から始めます:

L(t)

これは次のように書くことができます

L(t)

どこb = B/(2A)c = C/A

次に、変換u = t + bすると

L(t)

どこk = c - b^2

これで、リンクからの統合IDを使用して、次のものを取得できます。

L(t)

したがって、要約すると、必要な手順は次のとおりです。

  1. 元の式のようにA、B、Cを計算します。
  2. 計算b = B/(2A)してc = C/A
  3. 計算u = t + bしてk = c -b^2
  4. これらの値を上記の式に代入します。
于 2012-08-08T04:46:40.857 に答える
2

閉じた形の式があるかもしれませんが、これは私がすることです:

De-Casteljauのアルゴリズムを使用して、ベジェを0からtの部分に分割し、リンクのアルゴリズムを使用してその長さを計算します。

于 2012-08-08T04:06:46.383 に答える
2

0と1の間ではなく、0とtの間の積分を評価する必要があります。数学に興味がない場合は、選択したシンボリックツールボックスを使用してそれを行うことができます。例えば:

http://integrals.wolfram.com/index.jsp?expr=Sqrt\[a*x*x%2Bb*x%2Bc\]&random=false

x=tおよびx=0の結果を評価し、それらを減算します。

于 2016-03-17T15:13:53.473 に答える