Как рассчитать расположение точек в повернутой форме AS3 - PullRequest
4 голосов
/ 09 января 2012

Я создаю игру, в которой я рисую ряд многоугольников, создавая точки вокруг радиуса крикла.

Позже я поворачиваю фигуры и мне нужно вычислить новое местоположение (X, Y) точек на основе поворота.У меня есть Старый XY каждой точки, XY центра формы, радиус формы и вращения.

Посмотрите на мою диаграмму задачи.

Diagram of problem

Ответы [ 2 ]

3 голосов
/ 09 января 2012

Для этого можно использовать матричные преобразования, но вы также можете сделать это вручную: http://www.siggraph.org/education/materials/HyperGraph/modeling/mod_tran/2drota.htm

Так по существу;

newX = initialX * Math.cos(angle) - initialY * Math.sin(angle);
newY = initialY * Math.cos(angle) + initialX * Math.sin(angle);
//Angle is in radians btw

Предполагается, что начальные значения X / Y относятся к центру вращения, поэтому вам придется вычесть центральную точку перед началом, а затем добавить ее снова после расчета, чтобы разместить ее правильно.

Надеюсь, это поможет!

1 голос
/ 09 января 2012

Для каждой точки выполните:

alpha = arctan2(x, y)
len = sqrt(x^2 + y^2)
newX = len * cos(alpha + rotation)
newy = len * sin(alpha + rotation)

Исходные [x, y] и новые [newX, newY] координаты относительно центра вашего вращения.Если ваш исходный [x, y] является абсолютным, вы должны сначала вычислить относительное:

x = xAbs - xCenter
y = yAbs - yCenter

Убедитесь, что ваша функция arctan2 выдает результат PI / 2 или -PI / 2, если x = 0.Примитивные функции arctan не допускают x = 0.

...