ポイントA1、B2、A3、...、ANを持つポリゴンAと、ポイントB1、B2、B3、...、BNを持つポリゴンBがあるとします。あなたは何ができるか
は、すべての可能な組み合わせ(A1 & B1、A1 & B2、... & BN)のためにBXにポイントAXから行を記述することです。
このような行はパラメトリック形式で記述することができます:SomePoint = InicialPoint + Direction * tとなり、可能なの「分離線」になります。それをつけろ!
ここでは、各ポリゴンの各点からこの候補線に別のベクトルを記述することです。これらの行のそれぞれには方向ベクトルがあります。
各行の方向ベクトルと候補の方向ベクトルとの外積が同じ方向(Z-正またはZ-負)の場合、それらの点が分離線の同じ側にあることを意味します)。
ここで、各ポリゴンの各点について記述したすべての線を確認します。ポリゴンAのすべての点が一方の側にあり、ポリゴンBのすべての点が他方の側にあるかどうかを調べることができます。次に、必要な線が見つかりました。そうでない場合は、次の候補ライン(AX-BX)を試してみてください。考えられるすべての候補行でこれらの組み合わせが見つからない場合は、ポリゴン間に交差点があることを意味します。
私はそれが最高/最速のアルゴリズムであるかどうかはわかりませんが、うまくいきます。