2011-11-16 4 views
0

Я пытаюсь настроить поворот для моего падающего объекта (составной формы), чтобы он вращался на 90 градусов каждый раз при нажатии клавиши вокруг центральной точки. Я хочу использовать библиотеку java.awt.Point, чтобы обозначить одну из частей моей составной фигуры как «центр вращения», а затем использовать точку .Point для точки с предыдущей позицией, а затем установить новые местоположения x и y. а затем каким-то образом установили новые координаты новой позиции.Как повернуть объект на 90 градусов вокруг его центра?

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

Может ли кто-нибудь помочь с общим примером того, как идти о вращении комп. вокруг центра?

ответ

1

Не входя в реализацию Java-Point, общая концепция очень проста.

Сначала вам нужно преобразовать все ваши точки формы, чтобы центр вашей формы (0,0). Например, если центр (Cx, Cy) и одна из ваших точек (Px, Py), то новая точка должна быть NewP = (Px - Cx, Py - Cy). Теперь, после того как все точки были преобразованы, вы должны сделать следующее для каждой из точек. Предполагая, что вы хотите, чтобы повернуть на 90 градусов часовой стрелки (проверить ссылку ниже, чтобы увидеть, как это делается для других вращений): RotatedP = (-NewPy, NewPx)

После повернуты, вы должны превратить вас указывает обратно на их исходное местоположение: FinalP = (RotatedPx - NewPx, RotatedPy - NewPy).

Некоторые псевдо-код:

Point p; 
Center center; 

Point relativePoint = p - center; 

// For 90deg CW: -y, x 
// For 90deg CC: y, -x 
Point rotatedPoint = new Point(-1 * relativePoint.Y, relativePoint.X); // 90deg CW 
Point finalPoint = rotatedPoint + center; 

Просто прочитал немного о преобразованиях и вращения, и это должно быть ясно для вас: Rotations - прочитать только первую часть (Повороты в двух измерениях)

+0

Спасибо :) Это сработало! – Susie

Смежные вопросы