2011-03-27 3 views
4

Je voudrais calculer l'AABB (bounded bounding box) pour une courbe quadratique ou bezier. La seule façon dont je sais comment faire est d'évaluer un nombre élevé de points sur la courbe bezier, puis d'utiliser ces points pour calculer l'AABB.Calculer Bezier AABB

Y a-t-il un meilleur moyen?

Répondre

2

ressources Grand sur les courbes de Bézier, et l'exemple de travail de AABB http://pomax.github.io/bezierinfo/#boundingbox Pour la courbe quadratique si vous en avez besoin, calculer également ces dérivés en utilisant.

Toujours éviter les méthodes itératives lorsque la forme fermée est disponible.

0

La courbe de Bézier quadratique comprend 2 fonctions de coordonnées - x (t) et y (t) où.

Ces fonctions peuvent avoir un maximum ou un minimum (les points où x '(t) = 0 et y' (t) = 0) et ces points sont les points limites de l'aabb.

donc l'algorithme est:

  1. Imaginez x0, y0, x1, y1, x2, y2 sont connus et calculer les valeurs t (x0, x1, x2) et t (y0, y1, y2) quand x '(t) = 0 et y' (t) = 0 respectivement.
  2. Calculer les deux valeurs et vérifier si elles sont> = 0 et < = 1. Si elles sont évaluer les points du bezier quadratique.
  3. Prenez le premier et le dernier point.
  4. Maintenant, vous avez 4 points (ou peut-être moins), utilisez-les pour calculer AABB.

Par ailleurs:

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

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

Vous pouvez trouver le code complet ici: https://github.com/keyten/Graphics2D/blob/Delta/Core/Curve.Math.js#L295

Questions connexes