ActionScript 3
Trabajando con la geometría
Buscar..
Obteniendo el ángulo entre dos puntos
Usando las matemáticas de vainilla:
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 nuevo vector que representa la diferencia entre los dos primeros:
var difference:Point = to.subtract(from);
var angle:Number = Math.atan2(difference.y, difference.x);
Nota:
atan2()
devuelve radianes, no grados.
Conseguir la distancia entre dos puntos.
Usando las matemáticas de vainilla:
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);
Usando la funcionalidad incorporada de Point
:
var distance:Number = to.subtract(from).length; // or
var distance:Number = Point.distance(to, from);
Convertir radianes a grados
var degrees:Number = radians * 180 / Math.PI;
Convertir grados a radianes
var radians:Number = degrees / 180 * Math.PI;
El valor de un círculo en grados y radianes.
- Un círculo completo es
360
grados o radianes deMath.PI * 2
. - La mitad de esos valores sigue siendo
180
grados o radianesMath.PI
- Un cuarto es entonces
90
grados oMath.PI / 2
.
Para obtener un segmento como un porcentaje de un círculo entero en radianes:
function getSegment(percent:Number):Number {
return Math.PI * 2 * percent;
}
var tenth:Number = getSegment(0.1); // One tenth of a circle in radians.
Moviendo un punto a lo largo de un ángulo
Suponiendo que tiene el ángulo que desea mover y un objeto con los valores x
e y
que desea mover:
var position:Point = new Point(10, 10);
var angle:Number = 1.25;
Puedes moverte a lo largo del eje x
con Math.cos
:
position.x += Math.cos(angle);
Y el eje y
con Math.sin
:
position.y += Math.sin(angle);
Por supuesto, puede multiplicar el resultado de Math.cos
y Math.sin
por la distancia que desee recorrer:
var distance:int = 20;
position.x += Math.cos(angle) * distance;
position.y += Math.sin(angle) * distance;
Nota: El ángulo de entrada debe estar en radianes.
Determine si un punto está dentro de un área rectangular
Puede probar si un punto está dentro de un rectángulo 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
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow