Geometry 确定方形单元是否位于多边形内

Geometry 确定方形单元是否位于多边形内,geometry,polygon,voronoi,point-in-polygon,Geometry,Polygon,Voronoi,Point In Polygon,例如,我希望多边形#14内部或部分内部的网格单元(正方形)与#14相关联。是否有一种算法可以有效地计算正方形是否位于多边形内部 我有组成多边形的边的坐标 如果我答对了,这是JavaScript中的一个实现,它获取一组二维点(称为站点),并返回一个结构,其中包含该点的计算值的数据。它返回名为单元格的列表中的多边形。它似乎是用来测量的。如果这是真的,我们知道多边形总是凸的(参见中的“形式定义”一节) 现在,以下是解决此问题的选项(很难简单): 1。多边形剪裁: 为正方形形成一个多边形 所有的细胞 在

例如,我希望多边形#14内部或部分内部的网格单元(正方形)与#14相关联。是否有一种算法可以有效地计算正方形是否位于多边形内部


我有组成多边形的边的坐标

如果我答对了,这是JavaScript中的一个实现,它获取一组二维点(称为
站点
),并返回一个结构,其中包含该点的计算值的数据。它返回名为
单元格的列表中的多边形。它似乎是用来测量的。如果这是真的,我们知道多边形总是凸的(参见中的“形式定义”一节)

现在,以下是解决此问题的选项(很难简单):

1。多边形剪裁

  • 为正方形形成一个多边形
  • 所有的细胞
  • 在这个十字路口
  • 找到最大的十字路口
  • 2-多边形中的点

    您也可以简单地找到正方形中心所在的单元。是一种健壮的PIP算法。尽管对于凸多边形有一种更简单的方法(请参见“凸多边形”一节)

    3。点之间的距离

    如果您知道与每个
    单元关联的
    站点
    ,那么您只需要计算正方形中心到所有
    站点的距离
    。无论您使用什么方法计算Voronoi,正方形的中心点位于
    单元内,其相关
    位置的距离是最小的,因为这实际上是Voronoi图中划分平面的想法


    例外情况:

    • 第一种方法的计算成本很高,但最精确。第二个和第三个选项在大多数情况下都可以正常工作,但也有一些例外情况是它们无法正确决定:

    • 第二个和第三个非常相似,但PIP的缺点是点位于多边形的边上,这会增加检测开销
    多边形的已知情况是什么?它总是凸的吗?或者它可以是任意的?(可能是一个Voronoi细胞?)是的,这是一个Voronoi细胞。Voronoi细胞是聚类过程的结果吗?更具体地说,你有集群中心的坐标和相似性度量吗?没有,它只是从画布上的随机点生成的。是我正在使用的实现。谢谢!我最终实现了光线投射。