2016-03-04 3 views
0

Предположим, я хочу, чтобы спрайт циркулировал вокруг определенной точки. Я мог бы нарисовать круг вокруг этой точки с помощью метода drawOval, но как получить конкретные координаты этого овала, на котором можно было бы нарисовать движущийся спрайт.Как получить координаты выделенного круга Java2D

+0

Как установить положение спрайтов без фактического рисования круга, будет ли это решение? Вы можете просто изменить значение угла и обновить позицию на основе этого? –

+0

@FlorisVelleman Я не думаю, что это возможно любым другим способом, если вы не хотите захватить экран и выполнить обнаружение края и распознавание формы :) – EvilTak

+0

@EvilTak Вы могли бы нарисовать круг на пустой кадре и восстановить все позиции x, y которые нарисованы. Это также эффективно подходит для ответа OPs, хотя это кажется очень странным решением. –

ответ

1

Для того, чтобы получить все точки на окружности эллипса (или овальной формы), можно использовать следующую формулу (posX и posY являются Coords центра овала и width и height ширина и высота овала соответственно):

x = posX + cos(angle) * width * 0.5 
y = posY + sin(angle) * height * 0.5 

Где угол идет от 0 до 2 * PI радианов.

Вы можете увеличивать angle что-то вроде delta_time * speed где delta_time это время, которое потребовалось, чтобы сделать последний кадр (или, вернее, время с момента последнего кадра) в секундах и speed это скорость (в unit/second), на которой вы хотите спрайт для перемещения.

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