Javaで分離軸定理を実装しました。衝突検出自体はうまく機能します。しかし、衝突の解決に関しては行き詰まっています。
翻訳を取得する私の方法は次のようになります。
public float getOverlap(final Projection other) {
float start = m_min > other.m_min ? m_min : other.m_min;
float end = m_max < other.m_max ? m_max : other.m_max;
float translation = end - start;
return translation;
}
写真の 2 つの長方形の射影がこのように見えるとしましょう。
R1.min = 2
R1.max = 8
R2.min = 5
R2.max = 11
R1 対 R2 をチェックすると、変換は 3 になります R2 と R1 をチェックすると、変換も 3 になります
次に、正規化された軸に平行移動を追加します
Normalized axis = Vector(1,0)
Translation Vector = Vector(1,0)*3 = Vector (3,0)
そして、R1 と R2 はどちらも右に 3 ポイント移動しますが、異なる方向に移動するはずです。R1 は Vector(-3,0) を移動し、R2 は Vector(3,0) を移動する必要があります。
どうすれば正しい方向を計算できますか?