あなたの四角形が座標軸に揃っているとしましょう。 (そうでなければ、まず問題全体を回転させます)。次いで、9部に平面を分割:上記と真上、正方形の左正方形、等:内部
. .
. .
. .
| |
1 | 2 | 3
...-----+------+-----...
| |
4 | 5 | 6
| |
...-----+------+-----...
7 | 8 | 9
| |
. .
. .
. .
次に正方形を形成する線で座標を比較することによって、あなたのポイントを分類します。点が領域1,3,7、または9にある場合、正方形の最も近い点が対応する頂点になります。それが領域2,4,6または8にある場合、最も近い点は対応する面への投影です。 (点の適切な座標を面の座標に置き換えてください)。領域5では、どちら側が最も近いかを判断する必要があります。これは、適切な座標を簡単に減算することによって行うことができます。一番近い面が特定されたら、座標を代入すれば完了です。
領域5があるので、ここで私はそれを行うだろう方法です最も複雑な(そしてあなたの質問に最も関連する):
がであることのポイントは、正方形の座標(X、Y)と側面を持ってみましょう座標y = Y 上、y = Y 下、同様にx。次に比較| X - X が左 |、| X - X 右 |、| Y - Y トップ |、及び| Y - Y 下 |どちらが近いかを決定する。それがトップだと言ってください。正方形の最も近い点は(X、Y の上の)であり、点と辺の間の距離はちょうど| Y - Yです。上の |
私の説明では、領域5には絶対値を使用しましたが、適切な減算を逆にして絶対値をとることは避けることができます。 (どの座標軸が逆転するかは、座標軸がどのように動くかによって決まります。)また、ポイントを分類するための問題も無視しました。あなたはどこでも兆候について一貫していなければなりません。
ようこそスタックオーバーフロー!宿題の助けを求めているようです。それ自体に問題はありませんが、これらのことを守ってください(http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845)、それに応じて質問を編集してください。 –
@JoeC実際、これは私が作成しているゲームのためのものです。プレイヤーはこの広場の中にいなければなりません。私は彼らに国境までの距離を知らせ、距離があまりにも小さくなったらそれを残すことを防ぎたいと思います。 –
OK。それの多くはまだ適用されます。 –