Обнаружение столкновений с полигонами странной формы

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

Кажется, я не могу понять, как выполнить обнаружение столкновений с краями и правильно отскочить формы.

Я уверен, что эта проблема была решена раньше, но я не могу найти хороший пример.

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

Может кто-то указать мне верное направление?

Спасибо, Джейсон


person Jason    schedule 08.03.2011    source источник


Ответы (1)


Вам нужно выполнить проверку на пересечение линии окружности.

Чтобы сделать это быстрее, вы можете сначала установить ограничивающие рамки. Например, если начальная и конечная точки линии находятся слева от крайней левой координаты окружности, пересечения быть не может.

person Aaron Digulla    schedule 08.03.2011
comment
Большое спасибо, но еще один вопрос. По какой формуле рассчитать нормаль для отражения вокруг? - person Jason; 08.03.2011
comment
Джейсон: См. этот ответ: stackoverflow.com/questions/1243614/ - person Aaron Digulla; 08.03.2011