2015-02-03 3 views
0

Я пытаюсь обнаружить и обработать столкновение между несколькими круглыми объектами с неправильной формой.Столкновение с нерегулярной формой - обнаружение и управление

enter image description here

Я полагаю, что я должен использовать обнаружение столкновения с точностью до пиксела. Я прав (я полагаю, это не очень эффективно)?

Но как рассчитать результаты столкновения? Я хочу имитировать «отскок» объекта.

enter image description here

Легко вычислить «отскок» угол с правильной формой. Но в таком случае? Как действовать? Есть ли хорошо известный подход?

ответ

2

Любой алгоритм обработки столкновений должен работать с точным определением самой кривой, а не только ее формат пикселей, который не является векторизованным и не может растягиваться или преобразовываться должным образом на 2D-пространстве.

В 3D-мире типичным подходом является разделение всех поверхностей на треугольники. Поэтому для вычисления столкновения это эквивалентно вычислению расстояния центра круга к каждому треугольнику, который имеет хорошо установленный алгоритм и математическое представление. Теперь, чтобы уменьшить это в 2D, я бы поспорил, что вам нужно

  1. Переводите произвольную форму эффективна в соединенные прямые
  2. вычислить расстояние от центра к каждому прямому

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

Существует несколько способов ускорить этот процесс. Обычным способом является округление каждой части неправильной формы до «круга» (2D) или «сферы (3D)). Если внешний круг/сфера не сталкивается с вашим кругом, строки, содержащиеся в нем, не будут , либо

Вы можете прочитать компьютерную графику, чтобы узнать больше о таких вещах.

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