La fonction getBounds AS3 renvoie un rectangle qui ne correspond pas étroitement à une ellipse pivotée. Au lieu de cela, il renvoie un rectangle aligné sur l'axe basé sur les limites d'un rectangle dont la largeur/hauteur correspond au diamètre max/min de l'ellipse et suit sa rotation.Comment trouvez-vous une boîte de jonction serrée et alignée sur les axes d'une ellipse pivotée dans AS3?
La réponse à une question similaire sur Stack Overflow contours avec élégance la partie mathématique de ma question:
Stack Overflow Q/A about the math of ellipses and bounding boxes
Basé sur cela, je pris un coup de couteau à coder une solution dans AS3. Jusqu'à présent, j'ai été capable de produire un rectangle qui correspond parfaitement à l'axe des x, mais comme je tourne mon ellipse, il agit très bizarre le long de l'axe des y. Plutôt que d'alterner entre 2 * r_min et 2 * r_max en tournant, il alterne entre 2 * r_min et 0. Ma meilleure estimation est que j'ai fait quelque chose de mal en résolvant le t différencié pour gradient -> infini ...
Voici un exemple de mon code:
var r_max:uint = 45;
var r_min:uint = 20;
var rot:Number = ellipse.rotation * (Math.PI/180);
var t_nil:Number = Math.atan(-r_min * Math.tan(rot)/r_max);
var t_inf:Number = Math.atan(r_min * Math.atan(rot)/r_max) + (Math.PI/2);
var x:Number = r_max * Math.cos(t_nil) * Math.cos(rot) - r_min * Math.sin(t_nil) * Math.sin(rot);
var y:Number = r_min * Math.sin(t_inf) * Math.cos(rot) + r_max * Math.cos(t_inf) * Math.sin(rot);