ActionScript 3
Работа с геометрией
Поиск…
Получение угла между двумя точками
Использование математики ванили:
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);
Используя новый вектор, представляющий разницу между двумя первыми:
var difference:Point = to.subtract(from);
var angle:Number = Math.atan2(difference.y, difference.x);
Примечание:
atan2()
возвращает радианы, а не градусы.
Получение расстояния между двумя точками
Использование математики ванили:
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);
Использование встроенных функций Point
:
var distance:Number = to.subtract(from).length; // or
var distance:Number = Point.distance(to, from);
Преобразование радианов в градусы
var degrees:Number = radians * 180 / Math.PI;
Преобразование градусов в радианы
var radians:Number = degrees / 180 * Math.PI;
Значение круга в градусах и радианах
- Целый круг -
360
градусов илиMath.PI * 2
радианов. - Половина этих значений должна составлять
180
градусов илиMath.PI
- Четверть составляет
90
градусов илиMath.PI / 2
радианов.
Чтобы получить сегмент в процентах от всего круга в радианах:
function getSegment(percent:Number):Number {
return Math.PI * 2 * percent;
}
var tenth:Number = getSegment(0.1); // One tenth of a circle in radians.
Перемещение точки вдоль угла
Предполагая, что у вас есть угол, который вы хотите переместить, и объект с значениями x
и y
вы хотите переместить:
var position:Point = new Point(10, 10);
var angle:Number = 1.25;
Вы можете перемещаться вдоль оси x
с помощью Math.cos
:
position.x += Math.cos(angle);
И ось y
с Math.sin
:
position.y += Math.sin(angle);
Вы можете, конечно, умножить результат Math.cos
и Math.sin
на расстояние, которое вы хотите путешествовать:
var distance:int = 20;
position.x += Math.cos(angle) * distance;
position.y += Math.sin(angle) * distance;
Примечание. Угол входа должен быть в радианах.
Определите, находится ли точка внутри области прямоугольника
Вы можете проверить, находится ли точка внутри прямоугольника с помощью 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