1 つの方法として、1 本のロープまたは複数のロープを使用する方法があります。この場合、ロープは直線的に接続されたいくつかのポイントで構成されます。空間内のランダムな場所で点を初期化できますが、最初の点はAの初期位置であり、最後の点はAの最終位置です。
最初は、ロープは非常に悪いルートになります。最適化するには、エネルギー勾配に沿ってポイントを移動します。あなたの場合、エネルギー関数は非常に単純です。つまり、ロープの全長です。
これは新しいアイデアではありませんが、コンピューター ビジョンでオブジェクトの境界を検出するために使用されますが、エネルギー関数ははるかに複雑です。それでも、「ヘビ」を見て、2 つの隣接点を考慮して各点を移動する方法を理解してください: http://en.wikipedia.org/wiki/Snake_(computer_vision )
ただし、あなたの場合は、各ポイントの方向をその隣接ポイントによって加えられる力から導き出すだけで十分です。
あなたの問題は、衝突を考慮する制約付きの問題です。ここで@paddyのアイデアを実際に使用して、各オブジェクトに凸包、または単に球を使用します。後者の場合、ポイントの数が無限ではないことを考慮して、Bまでの距離がAの半径にBの半径を加えたものにファッジ ファクターを加えた値よりも小さい場所にポイントを移動しないでください。
有効なソリューションでは、任意の隣接点間の最長距離がしきい値よりも小さいことが必要です。そうでない場合、2 点間の接続線が障害物と交差します。