ActionScript 3
Travailler avec la géométrie
Recherche…
Obtenir l'angle entre deux points
Utiliser les mathématiques de la vanille:
var from:Point = new Point(100, 50);
var to:Point = new Point(80, 95);
var angle:Number = Math.atan2(to.y - from.y, to.x - from.x);
En utilisant un nouveau vecteur représentant la différence entre les deux premiers:
var difference:Point = to.subtract(from);
var angle:Number = Math.atan2(difference.y, difference.x);
Note:
atan2()
renvoie les radians, pas les degrés.
Obtenir la distance entre deux points
Utiliser les mathématiques de la vanille:
var from:Point = new Point(300, 10);
var to:Point = new Point(75, 40);
var a:Number = to.x - from.x;
var b:Number = to.y - from.y;
var distance:Number = Math.sqrt(a * a + b * b);
En utilisant la fonctionnalité intégrée de Point
:
var distance:Number = to.subtract(from).length; // or
var distance:Number = Point.distance(to, from);
Conversion de radians en degrés
var degrees:Number = radians * 180 / Math.PI;
Conversion de degrés en radians
var radians:Number = degrees / 180 * Math.PI;
La valeur d'un cercle en degrés et radians
- Un cercle entier est de
360
degrés ouMath.PI * 2
radians. - La moitié de ces valeurs est
Math.PI
180
degrés ouMath.PI
radians. - Un quart est alors de
90
degrés ouMath.PI / 2
radians.
Pour obtenir un segment en pourcentage d'un cercle entier en radians:
function getSegment(percent:Number):Number {
return Math.PI * 2 * percent;
}
var tenth:Number = getSegment(0.1); // One tenth of a circle in radians.
Déplacement d'un point selon un angle
En supposant que vous avez l'angle que vous souhaitez déplacer et un objet avec des valeurs x
et y
vous souhaitez déplacer:
var position:Point = new Point(10, 10);
var angle:Number = 1.25;
Vous pouvez vous déplacer sur l'axe des x
avec Math.cos
:
position.x += Math.cos(angle);
Et l'axe y
avec Math.sin
:
position.y += Math.sin(angle);
Vous pouvez bien sûr multiplier le résultat de Math.cos
et Math.sin
par la distance à parcourir:
var distance:int = 20;
position.x += Math.cos(angle) * distance;
position.y += Math.sin(angle) * distance;
Remarque: L'angle d'entrée doit être en radians.
Déterminer si un point est à l'intérieur d'un rectangle
Vous pouvez tester si un point se trouve dans un rectangle à l'aide de Rectangle.containsPoint()
:
var point:Point = new Point(5, 5);
var rectangle:Rectangle = new Rectangle(0, 0, 10, 10);
var contains:Boolean = rectangle.containsPoint(point); // true