Наиболее распространенными решениями этого являются либо деконструкция деталей на треугольники с последующим тестированием с перекрытием, либо визуализация его в виде точечного растрового изображения и сравнение по пикселям за раз.
Первыйназывается тесселяцией или триангуляцией многоугольника:
http://en.wikipedia.org/wiki/Polygon_triangulation
И имеет преимущество в том, что лучше, чем O (n ^ 2).Для этого существует ряд алгоритмов, в основном потому, что движкам 3-D необходимо сформировать списки треугольников для передачи аппаратному обеспечению графического ускорителя, которое часто принимает информацию в виде тройки координат [x, y].
последнее, к сожалению, O (n ^ 2), но позволяет вам делать такие вещи, как проверка альфа-изображения растрового изображения, чтобы "четкие" на изображении (альфа-ноль или некоторые обрезки) не учитывались.Таким образом, вы делаете интересные вещи, например, определяете, сочетаются ли два перекрывающихся пикселя достаточно «сплошными» для столкновения, и, таким образом, имеют «нечеткие» частичные альфа-битовые карты, летающие вокруг.Этот пример не распространяется на альфа-версию и предназначен для Android, но пример в целом справедлив:
https://gamedev.stackexchange.com/questions/23603/how-to-handle-pixel-perfect-collision-detection-with-rotation
Некоторую дополнительную информацию можно найти здесь:
Простой алгоритм пересечения многоугольников
https://gamedev.stackexchange.com/questions/33553/what-algorithms-exist-for-generating-collision-geometry-from-an-image
Примечание. Если вы хотите использовать прямоугольники, включая пучки прямоугольников, сложенных в приблизительные формы, в качестве границы для столкновения,затем (полное раскрытие) я сделал для этого плагин jQuery.Так как вы сказали, что сильно полагаетесь на jQuery:
https://sourceforge.net/projects/jquerycollision/