PHP判断一个点是否在 一个图形内[射线法]

本文阅读 1 分钟
首页 PHP笔记 正文
  1. function is_inline($point=array(), $poly=array()){
  2. $point_x = $point['x'];
  3. $point_y = $point['y'];
  4. $in_line = false;
  5. for ($i=0, $L=count($poly),$j=$L - 1; $i < $L; $j = $i, $i++){
  6. //获取相邻2个点
  7. $sx = $poly[$i]['x'];
  8. $sy = $poly[$i]['y'];
  9. $tx = $poly[$j]['x'];
  10. $ty = $poly[$j]['y'];
  11. // 点与多边形顶点重合
  12. if(($sx === $point_x && $sy === $point_y) || ($tx === $point_x && $ty === $point_y)) {
  13. return true;
  14. }
  15. // 判断线段两端点是否在射线两侧
  16. if(($sy < $point_y && $ty >= $point_y) || ($sy >= $point_y && $ty < $point_y)) {
  17. // 线段上与射线 Y 坐标相同的点的 X 坐标
  18. $x = $sx + ($point_y - $sy) * ($tx - $sx) / ($ty - $sy);
  19. // 点在多边形的边上
  20. if($x === $point_x) {
  21. return true;
  22. }
  23. // 射线穿过多边形的边界
  24. if($x > $point_x) {$in_line = !$in_line; }
  25. }
  26. }
  27. return $in_line;
  28. }
解压密码: detechn或detechn.com

免责声明

本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。

本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

tp5数据查询中,以两个字段大小为条件进行查询
« 上一篇 07-30
PHP curl简单封装 get post
下一篇 » 07-30

发表评论

惪特博客
  • 文章总数:
    18506 篇
  • 评论总数:
    53490 条
  • 标签总数:
    8891 个
  • 总浏览量:
    26163253 次
  • 最后更新:
    6月25日

最多点赞

随便看看

标签TAG