2011-03-27 9 views
4

2次曲線またはベジエ曲線のAABB(軸に合わせた境界ボックス)を計算したいと思います。ベジエAABBを計算する

私がこれを行う方法を知っている唯一の方法は、ベジエ曲線上の多数の点を評価し、それらの点を使ってAABBを計算することです。

良い方法がありますか?

答えて

2

素晴らしいリソース、および作業例:この記事を見てください。

閉じたフォームが利用可能な場合は、必ず反復的な方法を避けてください。

0

2次ベジェ曲線は、x(t)とy(t)の2つの座標関数で構成されます。

これらの関数は、最大値または最小値(x '(t)= 0およびy'(t)= 0の点)を持ち、これらの点はaabbの境界点です。

ので、アルゴリズムは次のとおりです。

  1. は知られており、値T(X0、X1、X2)とt(Y0、Y1、Y2)を計算しているX0、Y0、X1、Y1、X2、Y2を想像してみてx '(t)= 0、y'(t)= 0とすると、
  2. 両方の値を計算し、それらが> = 0で、< = 1であるかどうかをチェックします。二次ベジェの点を評価している場合。
  3. 最初と最後のポイントを取る。
  4. これでAABBの計算に4ポイント(またはそれ以下)が使用されました。 - /(X2 - 2 * X1 + X0)

    トン(Y0、Y1、Y2)

    トン(X0、X1、X2)=(X1、X0):ところで

=(y0 - y1)/(y2 - 2 * y1 + y0)

フルコードはここにあります:https://github.com/keyten/Graphics2D/blob/Delta/Core/Curve.Math.js#L295