ActionScript 3
Lavorare con la geometria
Ricerca…
Ottenere l'angolo tra due punti
Usando la matematica di vaniglia:
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);
Usando un nuovo vettore che rappresenta la differenza tra i primi due:
var difference:Point = to.subtract(from);
var angle:Number = Math.atan2(difference.y, difference.x);
Nota:
atan2()
restituisce i radianti, non i gradi.
Ottenere la distanza tra due punti
Usando la matematica di vaniglia:
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);
Utilizzo della funzionalità integrata di Point
:
var distance:Number = to.subtract(from).length; // or
var distance:Number = Point.distance(to, from);
Convertire i radianti in gradi
var degrees:Number = radians * 180 / Math.PI;
Conversione di gradi in radianti
var radians:Number = degrees / 180 * Math.PI;
Il valore di un cerchio in gradi e radianti
- Un intero cerchio è di
360
gradi oMath.PI * 2
radianti. - La metà di questi valori segue per essere di
180
gradi o diMath.PI
- Un quarto è quindi
90
gradi oMath.PI / 2
radianti.
Per ottenere un segmento come percentuale di un intero cerchio in radianti:
function getSegment(percent:Number):Number {
return Math.PI * 2 * percent;
}
var tenth:Number = getSegment(0.1); // One tenth of a circle in radians.
Spostare un punto lungo un angolo
Supponendo di aver l'angolo che desideri muoversi dentro e un oggetto con x
e y
i valori che si desidera spostare:
var position:Point = new Point(10, 10);
var angle:Number = 1.25;
È possibile spostarsi lungo l'asse x
con Math.cos
:
position.x += Math.cos(angle);
E l'asse y
con Math.sin
:
position.y += Math.sin(angle);
Ovviamente puoi moltiplicare il risultato di Math.cos
e Math.sin
per la distanza che vuoi percorrere:
var distance:int = 20;
position.x += Math.cos(angle) * distance;
position.y += Math.sin(angle) * distance;
Nota: l'angolo di input deve essere in radianti.
Determina se un punto si trova all'interno di un'area rettangolare
Puoi verificare se un punto si trova all'interno di un rettangolo usando 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