29 марта 2011 г.

Геометрия за 6 класс

Из серии "На долгую память"

Поворот вектора на заданый угол:

public function rotateVector(vector:Point, angle:Number):Point {
angle = (angle*Math.PI)/180;
var returnPoint:Point = new Point();
returnPoint.x = vector.x*Math.cos(angle) - vector.y*Math.sin(angle);
returnPoint.y = vector.x * Math.sin(angle) + vector.y*Math.cos(angle);
return returnPoint;
}
вернёт повёрнутый вектор; исходный не изменяет; угол в градусах.




Движение к заданной точке:
обновление координат по таймеру или по Event.ENTER_FRAME

// 1) находим вектор направления движения:
var movingVector:Point = destinationPoint.subtract(new Point(x,y));
//destinationPoint - куда движемся, new Point(x,y) - откуда движемся.

// 2) находим* длину пути:
var pathLength:Number = movingVector.length;

// 3) нормализуем вектор направления
movingVector.normalize(Math.min(speed,pathLength));
// speed - скорость движения(например 1)


// 4) и собственно двигаем что нужно если нужно(например pathLength!=0)
x += movingVector.x;
y += movingVector.y;

Комментариев нет:

Отправить комментарий