PHP判断点是否在多边形区域内外
来源:互联网 发布:qt助手是什么软件 编辑:程序博客网 时间:2024/05/21 06:52
小谢博客原文地址https://xgs888.top/post/view?id=79
PHP判断点是否在多边形区域内外;根据数学知识的射线法,
射线与几何多边形相交的点的个数为奇数则是在几何内部;
偶数在外部;
/** * Created by PhpStorm. * function: inArea * Description: 判断点是否在多边形区域内 * User: Xiaoxie * @param $x * @param $y * @param $arr 几何订单坐标 * @return int * */public function inArea($x,$y,$arr){ //点的数量 $count = count($arr); $n = 0; //点与线相交的个数 $bool = 0;//外 for ($i = 0, $j = $count - 1; $i < $count; $j = $i, $i++) { //两个点一条线 取出两个连接点的定点 $px1 = $arr[$i][0]; $py1 = $arr[$i][1]; $px2 = $arr[$j][0]; $py2 = $arr[$j][1]; //$x的水平位置画射线 if($x>=$px1 || $x>= $px2) { //判断$y 是否在线的区域 if(($y>=$py1 && $y<=$py2) || ($y>=$py2 && $y<= $py1)){ if (($y == $py1 && $x == $px1) || ($y == $py2 && $x == $px2)) { #如果$x的值和点的坐标相同 $bool = 2;//在点上 return $bool; }else{ $px = $px1+($y-$py1)/($py2-$py1)*($px2-$px1) ; if($px ==$x) { $bool = 3;//在线上 }elseif($px< $x){ $n++; } } } } } if ($n%2 != 0) { $bool = 1; } return $bool;}
测试数组
$arr = [ ['9.4','12.04'], ['6.68','8.61'], ['9.05','6.06'], ['6.24','3.87'], ['10.02','2.55'], ['14.06','4.13'], ['16.35','7.56'], ['11.69','8.35'],];$x =15.73;$y = 5.62;//在外$x = 9.97;$y = 4.96; //在内
阅读全文
1 0
- PHP判断点是否在多边形区域内外
- 判断点是否在多边形区域里面
- POJ 2398 判断点在多边形内外
- HDU1756(判断点在多边形内外)
- HDU 1756 判断点在多边形内外
- HLG 围困---- 判断点在多边形内外
- Qt判断点是否在多边形区域中
- 多边形判断点内外
- c# 判断点是否在区域内点在区域内在多边形内判断
- PHP判断点是否在不规则多边形中
- 判断点在多边形内外的简单算法
- 判断点在多边形内外的简单算法
- 判断一个点在多边形的内外关系
- 判断点在多边形内外(角度判别法)
- POJ 1410 判断线段相交点在多边形内外
- OpenGL 如何判断点在多边形的内外关系
- 叉积判断点在多边形内外 & poj2318
- 百度地图 判断一个标注点是否在多边形区域里
- ULINK的手动刷新固件
- html5调用ajax关于服务的返回数据问题
- 115个Java面试题和答案——终极列表(上)
- 144. Binary Tree Preorder Traversal
- 【一】地图 Leaflet 起步
- PHP判断点是否在多边形区域内外
- Tomcat多域名配置
- Java 时间换算
- 前端css基础知识(3)
- 简练网软考知识点整理-项目风险审计及风险评估
- Linux下解压zip分卷文件
- 运维shell实例
- Android开发命名规范
- 实践mysql主从复制