我在想,如果下面的算法来检查点在内部矩形是有效的。 我用我自己的直觉(没有强烈TRIG /数学基础,以支持它)它的发展,所以我喜欢从别人听到同在这个问题上更多的经验。
语境:
- 矩形与4个点定义。 它可以旋转。
- 坐标始终为正。
- 根据定义,如果相交的点被认为是在矩形内。
假设:
- 使用点和矩形顶点(下面第一图)之间的距离。
- 最大可能的总距离是当点是在一个顶点(第二图)。
- 如果点仅仅是矩形之外,该距离将会更大(第三图)。
图链接: 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;
}
问题:这是正确的?