2016-12-03 22 views
1

私はゲームを作成しています。ゲームのプレイヤーは四角形内にとどまる必要があります。私は四角形の周囲の最も近い点までの距離を知らせて、距離が0になると離れることを止めたいと思っています。角の最も近い点を見つける

私はそれから最も近い点から所定の点の距離を見つける必要があります境界。

私には正方形があります。この正方形の中心は(0、0)です。これは、右上隅が(1/2の辺、1/2の辺)にあり、左下が( - 1/2の辺、 - 1/2の辺)にあることを意味します。ゲーム全体を通して地図が縮小するにつれて、私はこの価値を抽象的に保つ必要があります。

ポイントXとYを指定すると、最も近い座標点を見つけてそこからの距離を測定するにはどうすればよいでしょうか?

擬似コードまたはJavaの回答に感謝します。

ありがとうございます!

+0

ようこそスタックオーバーフロー!宿題の助けを求めているようです。それ自体に問題はありませんが、これらのことを守ってください(http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845)、それに応じて質問を編集してください。 –

+0

@JoeC実際、これは私が作成しているゲームのためのものです。プレイヤーはこの広場の中にいなければなりません。私は彼らに国境までの距離を知らせ、距離があまりにも小さくなったらそれを残すことを防ぎたいと思います。 –

+0

OK。それの多くはまだ適用されます。 –

答えて

3

上記の解決策はあまりにも複雑に思えます。

最初に気付くべきことは、エッジからポイントまでの最短距離が常にそのエッジからポイントに隣接するラインになることです。だから私は常に各エッジからの距離を計算し、表示する最短のものを選択します。それは簡単な計算でなければなりません。

上端から最小距離(W×1/2) - yposition

左端から

最小距離:xposition - (-w×1/2)

右端から

最小距離( )/ 2 * W - xposition

下端からの最小距離:yposition - (-w×1/2)

Wは平方の合計幅です。

これは正しいようですか?あなたはその考えを得る。すべての距離を正の数にしたいと思っていますが、これは上記のことが成し遂げたと思うものですが、間違っている可能性があります。

+0

あなたは、半分の長さのように(1/2)、または実際には1/2を意味しますか? –

+0

サイドの長さの1/2。 –

+0

あなたの正方形は縮小しているので、あなたは1/2 * wを行い、wは正方形の幅です。 –

2

あなたの四角形が座標軸に揃っているとしましょう。 (そうでなければ、まず問題全体を回転させます)。次いで、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には絶対値を使用しましたが、適切な減算を逆にして絶対値をとることは避けることができます。 (どの座標軸が逆転するかは、座標軸がどのように動くかによって決まります。)また、ポイントを分類するための問題も無視しました。あなたはどこでも兆候について一貫していなければなりません。

+0

他の答えよりずっと簡単です!答えをありがとう、それを感謝:) –

関連する問題