我在地图上定义了一个带有4个节点的矩形。
每个节点都是一个(X,Y) 坐标对。
X:纬度
Y:经度
X,Y : 地理坐标 (双精度值)
我想检查一个点 (X,Y) 是否在矩形内。
该点将是用户的当前位置 (当前位置来自移动设备的GPS输出)。
是否有特定的数学公式?如何确定特定点是否属于一个矩形?
因为我想在C#中实现它。
我在地图上定义了一个带有4个节点的矩形。
每个节点都是一个(X,Y) 坐标对。
X:纬度
Y:经度
X,Y : 地理坐标 (双精度值)
我想检查一个点 (X,Y) 是否在矩形内。
该点将是用户的当前位置 (当前位置来自移动设备的GPS输出)。
是否有特定的数学公式?如何确定特定点是否属于一个矩形?
因为我想在C#中实现它。
根据这个链接
经度可以在-180.0
到180.0
范围内变动,因此你需要非常准确地使用-180/180
,因为-180
经度等同于180
,就像一个矩形一样。
(15, 178, 25, -178)
点(20, 179)
应该在矩形内,而(20, 177)
则不应该在内;这就是为什么RectangleF.Contains()
在某些情况下可能是不正确的原因。
// Just to show the idea with 180 latitude;
// First 4 parameters could be crammed into RectangleF
// And last 2 parameters into PointF
public static Boolean WithinRectangle(Double latitudeNorth,
Double longitudeWest,
Double latitudeSouth,
Double longitudeEast,
Double latitude,
Double longitude) {
if (latitude > latitudeNorth)
return false;
else if (latitude < latitudeSouth)
return false;
if (longitudeEast >= longitudeWest)
return ((longitude >= longitudeWest) && (longitude <= longitudeEast))
else
return (longitude >= longitudeWest) || (longitude <= longitudeEast);
return false;
}
RectangleF
。根据所使用的坐标系,浮点数部分可能很关键。 - drew_w由于矩形的边不平行于X和Y轴,因此我认为最好寻找PIP(多边形内部点)问题,这比矩形更加通用。
因此,我测试了以下帖子中的代码,似乎适用于具有WGS84地理坐标的多边形。
感谢您之前的回答。