2014-01-31 3 views
1

Я реализовал вид Понга, где весла (Rectangle2D) может вращаться. Для получения более точной информации многие операции под управлением Graphics2D. Вращение тоже управляется методами вращать (...) предыдущего сказанного класса.Определение столкновения столкновений с использованием графики

Чтобы достичь реалистичного отскока, мне нужно знать, где мяч попадает в весло (только сторона, а не конкретная точка).

Я пытался определить (и вращать) два Rectangle2D, которые представляют собой заднюю часть и переднюю сторону лопасти, а затем признать отказы в одном из этих двух по методу удара (Rectangle2D г, форму S , boolean onStroke), но он не работает должным образом.

Вот Java класс Graphics2D:

http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics2D.html

Есть ли у Вас идея?

ответ

1

Предполагая, что у вас есть один прямоугольник для вашего весла и знать центр прямоугольника и круга и поворот вашего прямоугольника. Предполагая, что вращение нуля означает, ваш прямоугольник выровнен по горизонтали (ширина> высота).

  • Вычислить вектор разности (центр окружности) - (в центре прямоугольника)
  • Получить угол этого вектора и вычитать вращение прямоугольника (угол вектора Math.atan2 (у, х))
  • Полученное значение а говорит вам относительное направление вашего круга
  • убедитесь, что лежит между 0 и 2 * пи

д = Math.atan2 (высота прямоугольника, ширина прямоугольника)

  • Если a находится между q и pi-q, ваш круг попал на переднюю длинную (верхнюю) сторону.
  • Если a меньше, чем q или больше 2 * pi-q, оно находится на правой стороне.
  • Если a находится между pi-q и pi + q, оно находится на левой стороне.
  • Если а между р + д и 2р-д он попал в нижнюю часть прямоугольника
+0

Спасибо за ваш ответ. Я использовал переработанную версию. Ниже я отправлю свой код. –

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