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