PHP判断点是否在不规则多边形中
2017-06-04 11:31
232 查看
<?php /*判断函数,$new放入多边形各个顶点的坐标,$t为判断点的位置,$n为顶点坐标的个数-1;若点在多边形内则返回1,否则返回0;*/ function inpolygon($new,$t,$n){ for($i = 0;$i<=$n;$i++){ $new[$i][0]-=$t[0]; $new[$i][1]-=$t[1]; } $t1 = $new[0][0]>=0?($new[0][1]>=0?0:3):($new[0][1]>=0?1:2); for($sum =0,$i=1;$i<=$n;$i++){ if(!$new[$i][0] && !$new[$i][1]){ break; } $f = $new[$i][1]*$new[$i-1][0] - $new[$i][0]*$new[$i-1][1]; if(!$f && $new[$i-1][0]*$new[$i][0]<=0 && $new[$i-1][1]*$new[$i][1]<=0){ break; } $t2 = $new[$i][0]>=0?($new[$i][1]>=0?0:3):($new[$i][1]>=0?1:2); if($t2 == ($t1+1)%4){ $sum +=1; } else if($t2 == ($t1+3)%4){ $sum -=1; } else if($t2 == ($t1+2)%4){ if($f>0)$sum+=2; else $sum-=2; } $t1 = $t2; } if($i<=$n || $sum){ return 1; } return 0; } $new = array( array(2,1), array(5,1), array(6,3), array(7,1), array(8,3), array(8,6), array(4,4), array(2,6), array(2,1), ); $new2 = array(6,3); /*调用函数*/ echo inpolygon($new,$new2,count($new)-1); ?>
4000
相关文章推荐
- php结合mongodb判断坐标是否在指定多边形区域内的实例
- 判断一个坐标点是否在不规则多边形内部的算法
- PHP判断点是否在多边形区域内外
- php+mongodb判断坐标是否在指定多边形区域内的实例
- php+mongodb判断坐标是否在指定多边形区域内的实例
- PHP 判断点是否在多边形内
- 判断一个坐标点是否在不规则多边形内部的算法
- [几何]判断点是否在不规则多边形内
- 判断一个坐标点是否在不规则多边形内部的算法
- cocos2d-x 学习笔记-判断点击点是否在不规则多边形中
- [几何]判断点是否在不规则多边形内
- 判断一个坐标点是否在一个无规则的多边形内 (iOS定位服务与地图应用开发:高德地图开发)
- JS/PHP 判断是否是微信浏览器
- 判断多边形是否为平行四边形
- PHP 判断是否为Get/Post/Ajax提交
- PHP通过HTTP_USER_AGENT判断是否为手机移动终端的函数
- PHP JSON文件解析并获取key、value,判断key是否存在
- PHP中判断字符串是否含有中文
- PHP中如何判断数组是否为空
- 判断某个点是否在多边形内