4

二次曲線またはベジエ曲線の AABB (軸に沿ったバウンディング ボックス) を計算したいと思います。

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

より良い方法はありますか?

4

3 に答える 3

1

パラメトリック形式の曲線の導関数のおかげで、最小値と最大値を探すことで可能になるはずです。この記事をご覧ください: http://nishiohirokazu.blogspot.jp/2009/06/how-to-calculate-bezier-curves-bounding.html

于 2011-03-27T09:22:24.810 に答える
0

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

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

したがって、アルゴリズムは次のとおりです。

  1. x0、y0、x1、y1、x2、y2 が既知であり、x'(t) = 0 および y'(t) =それぞれ0。
  2. 両方の値を計算し、それらが >= 0 かつ <= 1 であるかどうかを確認します。それらが 2 次ベジエのポイントを評価します。
  3. 最初と最後のポイントを取ります。
  4. これで 4 つのポイント (またはそれ以下) が得られたので、それらを使用して AABB を計算します。

ところで:

t(x0、x1、x2) = (x0 - x1) / (x2 - 2 * x1 + x0)

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

ここで完全なコードを見つけることができます: https://github.com/keyten/Graphics2D/blob/Delta/Core/Curve.Math.js#L295

于 2017-11-10T11:31:48.763 に答える