LewaimaiMath.php 558 B

123456789101112131415161718192021222324
  1. <?php
  2. class LewaimaiMath {
  3. /*
  4. * nvert 多边形的顶点数
  5. * vertx, verty 顶点X坐标和Y坐标分别组成的数组
  6. * testx testy 需要测试的点的X坐标和Y坐标
  7. *
  8. */
  9. public static function InPolygon($nvert, $vertx, $verty, $testx, $testy)
  10. {
  11. $c = false;
  12. $i = 0;
  13. $j = 0;
  14. for ($i = 0, $j = $nvert - 1; $i < $nvert; $j = $i++)
  15. {
  16. if ( (($verty[$i] > $testy) != ($verty[$j] > $testy)) && ($testx < ($vertx[$j] - $vertx[$i]) * ($testy - $verty[$i]) / ($verty[$j] - $verty[$i]) + $vertx[$i]) )
  17. $c = !$c;
  18. }
  19. return $c;
  20. }
  21. }