- ベストアンサー
点Qから最短距離の点Piを効率的に求めたい
平面上にP1,P2,...,Pnが与えられています。 このとき、任意の点Qを与えると、Qからの距離の最短の点(等距離の点が複数あれば、そのうちの任意の1点)を返す関数(任意といった時点で数学的には関数でなくなっていますが)が欲しいのです。 単純に考えれば、forループで、全てのPiとの距離を求め、最短のPiを返せば良いのですが、点Qが移動する場合、直前のQに対応するPiである可能性が高いので、もう少し賢いアルゴリズムがある気がします。しかし、具体的なアルゴリズムが思いつきませんので、お知恵をお貸しください。 プログラミングはCを想定しています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- Interest
- ベストアンサー率31% (207/659)
回答No.3
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
- Situgyosya
- ベストアンサー率41% (21/51)
回答No.1
お礼
再度回答ありがとうございます。 私の望むアプリケーションでは、「対象点無し」はなく、少なくとも1点P1は定義されているという条件なので、必ず、最近点を返す必要があります。 点Qが原点(0,0)、P1(2,2),P2(3,0)があった場合、最近点はP2ですが、矩形の横幅、縦幅を2で検索する(LMax=2)とP1しか見つかりませんよね。P2を見つけるには、見つかったP1までの距離2√2を矩形の横幅、縦幅にして(LMax =距離QP1) 再度矩形を取りなおす必要があると思い、確認させてもらいました。逆に、P1迄の距離がはじめの矩形の2以下であれば、再確認の必要がないと考えました。これで合ってますよね?