PHP判断一个点是否在多边形内(优化版)

PHP判断一个点是否在多边形的内部,通常采用交点法来判断。以下为优化版的源码示例,仅供参考学习。

  1. function isPointInPolygon($point$polygon) {
  2.     $count = 0;
  3.     $n = count($polygon);
  4.     for ($i = 0; $i < $n$i++) {
  5.         $p1 = $polygon[$i];
  6.         $p2 = $polygon[($i+1)%$n];
  7.         if ($point[1] > min($p1[1], $p2[1]) && $point[1] <= max($p1[1], $p2[1]) && $point[0] <= max($p1[0], $p2[0]) && $p1[1] != $p2[1]) {
  8.             $xinters = ($point[1]-$p1[1])*($p2[0]-$p1[0])/($p2[1]-$p1[1])+$p1[0];
  9.             if ($p1[0] == $p2[0] || $point[0] <= $xinters) {
  10.                 $count++;
  11.             }
  12.         }
  13.     }
  14.     return $count%2 != 0;
  15. }

在上述代码中$point是要判断的坐标,$polygon是多边形顶点坐标,返回结果为 true的时候表示坐标在多边形内部,返回false表示坐标在多边形外部。

 

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!