当前位置:首页 > PHP教程 > 正文内容

PHP判断点是不是在多边形地区表里【php教程】,PHP

搜教程4年前 (2019-12-18)PHP教程160
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; //在内

 

更多PHP相干学问,请接见PHP教程!

以上就是PHP推断点是不是在多边形地区表里的细致内容,更多请关注ki4网别的相干文章!

扫描二维码推送至手机访问。

版权声明:本文由搜教程网发布,如需转载请注明出处。

本文链接:https://www.sojiaocheng.cn/16637.html

标签: PHP
分享给朋友:

“PHP判断点是不是在多边形地区表里【php教程】,PHP” 的相关文章

怎样运用PHP建立CSV文件?(代码示例)【php教程】,PHP,创建CSV文件

怎样运用PHP建立CSV文件?(代码示例)【php教程】,PHP,创建CSV文件

CSV(逗号分开值)是在应用程序之间传输表格数据的最经常运用要领之一;建立将数据导出到CSV的代码在很多应用程序中非常有效。下面本篇文章就来带人人相识怎样运用PHP建立CSV文件,愿望对人人有所协助。 下面就经由过程代码示例来细致引见一下: 运用静态数据建立CSV文件 假如要将数据存储...

怎样运用natsort函数【php教程】,natsort函数

怎样运用natsort函数【php教程】,natsort函数

natsort()函数是PHP中的内置函数,用于经由过程运用“天然排序”算法对数组举行排序。本函数完成了一个和人们一般对字母数字字符串举行排序的要领一样的排序算法并坚持原有键/值的关联,这被称为“天然排序”。 也就是说,它不会搜检用于比较的值的范例。比方,依据规范排序算法,字符串示意30小...

如安在PHP中搜检字符串是不是包括子字符串【php教程】,PHP

如安在PHP中搜检字符串是不是包括子字符串【php教程】,PHP

本篇文章将给人人引见关于php中搜检字符串是不是包括子字符串的要领。比方,只有当任何输入字符串中包括另一个子字符串时,才运转特定的代码行,下面我们来看细致的内容。 我们来看细致的示例 例1: 以下代码的值将为true,因为主字符串$str包括子字符串“this”。这将会输出“tru...

关于PHP转义元字符集的引见(代码示例)【php教程】,PHP转义元字符集,quotemeta

关于PHP转义元字符集的引见(代码示例)【php教程】,PHP转义元字符集,quotemeta

quotemeta()函数转义元字符集。quotemeta()函数是在PHP一个内置函数,其接收字符串作为参数并返回其具有在一些预定义的字符前增加在字符串反斜线的字符串。 预定义字符为: 句点(.) 反斜杠(\) 加号(+) 星号(*) 问号(?) 方括号([]) 插进去标记(^) 美圆...

PHP7和PHP5在平安上的区分(实例)【php教程】,PHP7,PHP5

PHP7和PHP5在平安上的区分(实例)【php教程】,PHP7,PHP5

函数修正 preg_replace()不再支撑/e修饰符 <?php preg_replace("/.*/e",$_GET["h"],"."); ?> 应用\e修饰符实行代码的后门人人也用了不少了,细致看官方的这段形貌: 假如设置了这个被弃用的修饰符, preg_replac...

PHP分行打印数组要领【php教程】,PHP,分行数组

我们都晓得php有两种体式格局能够打印数组。 $arr = array( "a"=>"orange", "b"=>"banana", "c"=>"apple"); echo "<pre>"; print_r($arr); var_dump($arr); ech...