ポイントが長方形の内側にあるかどうかをチェックする次のアルゴリズムが有効かどうか疑問に思いました。私は自分の直感を使ってそれを開発しました(それをサポートするための強力な三角法/数学の基礎はありません)ので、この問題についてより多くの経験を持つ誰かから聞いてみたいです。
コンテクスト:
- 長方形は4点で定義されます。回転させることができます。
- 座標は常に正です。
- 定義上、点は長方形と交差する場合、長方形の内側と見なされます。
仮説:
- ポイントと長方形の頂点の間の距離を使用します(下の最初の図)。
- 可能な最大合計距離は、ポイントが1つの頂点にある場合です(2番目の図)。
- ポイントが長方形のすぐ外側にある場合、距離は大きくなります(3番目の図)。
図のリンク: http: //i45.tinypic.com/id6o35.png
アルゴリズム(Java):
static boolean pointInsideRectangle(Point[] rect, Point point) {
double maxDistance = distance(rect[0], rect[1]);
maxDistance += distance(rect[0], rect[2]);
maxDistance += distance(rect[0], rect[3]);
double distance = 0;
for (Point rectPoint : rect) {
distance += distance(rectPoint, point);
if (distance > maxDistance) return false;
}
return true;
}
質問:これは正しいですか?