是位于地球表面上的多边形内部或外部的一个点

我如何确定一个点是否位于地球表面上的多边形的内部或外部?

多边形的内部可以通过右手规则确定,即。 当你在多边形周围走动时,多边形的内部在你的右侧。

多边形可能

  • 圈出两极
  • 跨越180度的经度
  • 覆盖全球50%以上
  • 由于地球是一个球体,正常的射线穿越算法无法正常工作。


    实际上,正常的光线追踪和缠绕规则方法在球体表面上工作得很好,只需稍作调整即可。

    在球体的表面上,“直线”是一个大圆,距离是以角度单位而不是米或英寸来衡量的。 从球体表面的任意点绘制射线只需通过任意点和球体表面上的任意点形成一个大圆。 为了保持数学的清洁,请从距离您测试位置的点上选择第二个距离pi / 2的点。 将通常的偶数规则应用于大圆和测试多边形。

    缠绕规则也直接从平面上的直线转化为球体上大圈的(段)。

    现在你需要的只是基本球形几何操作的Java实现。 我对这方面没有任何建议,但我想互联网会有所帮助。 数学从Mathworld开始。

    另一种方法是将你的点和多边形从球体表面投射到平面上 - 这就是地图投影所做的 - 内部的拓扑关系不会受到这种转换的影响。

    哦,如果你的多边形描述了一个大圆圈,你将不得不决定该怎么做


    使用平面而不是光线。 由两个点定义的球体表面上的“线”是大圆(以球的中心为中心的圆)的弧,并且也包含在包含这两个点和球体中心的平面中。

    测试该点是否比“多边形”每个边的相应平面“更大”或“更小”,以确定它所在的“线”的哪一侧。

    链接地址: http://www.djcxy.com/p/46393.html

    上一篇: Is a point inside or outside a polygon which is on the surface of a globe

    下一篇: Stateless pagination in CouchDB?