これは古い質問であることは知っていますが、凹型ポリゴンと凸型ポリゴン、および円の間の衝突を処理するためのPythonライブラリを作成しました。
使い方はとても簡単です、どうぞ。
例:
from collision import *
from collision import Vector as v
p0 = Concave_Poly(v(0,0), [v(-80,0), v(-20,20), v(0,80), v(20,20), v(80,0), v(20,-20), v(0,-80), v(-20,-20)])
p1 = Concave_Poly(v(20,20), [v(-80,0), v(-20,20), v(0,80), v(20,20), v(80,0), v(20,-20), v(0,-80), v(-20,-20)])
print(collide(p0,p1))
以下を含む応答を生成することもできます。
overlap (how much they overlap)
overlap vector (when subtracted from second shapes position, the shapes will no longer be colliding)
overlap vector normalized (vector direction of collision)
a in b (whether the first shape is fully inside the second)
b in a (whether the second shape is fully inside the first)
https://github.com/QwekoDev/collision