Heim > Backend-Entwicklung > PHP-Tutorial > PHP bestimmt, ob ein Punkt innerhalb oder außerhalb der Polygonfläche liegt

PHP bestimmt, ob ein Punkt innerhalb oder außerhalb der Polygonfläche liegt

藏色散人
Freigeben: 2023-04-08 06:18:02
nach vorne
4859 Leute haben es durchsucht

PHP bestimmt, ob sich ein Punkt innerhalb oder außerhalb des Polygonbereichs befindet.

Wenn die Anzahl der Punkte, die der Strahl mit dem geometrischen Polygon schneidet, ungerade ist, wird er gemäß der Strahlenmethode des mathematischen Wissens ermittelt ist innerhalb der Geometrie;

Eine gerade Zahl Extern;

/**
 * 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;
}
Nach dem Login kopieren

Testarray

$arr = [
    [&#39;9.4&#39;,&#39;12.04&#39;],
    [&#39;6.68&#39;,&#39;8.61&#39;],
    [&#39;9.05&#39;,&#39;6.06&#39;],
    [&#39;6.24&#39;,&#39;3.87&#39;],
    [&#39;10.02&#39;,&#39;2.55&#39;],
 
    [&#39;14.06&#39;,&#39;4.13&#39;],
 
    [&#39;16.35&#39;,&#39;7.56&#39;],
 
    [&#39;11.69&#39;,&#39;8.35&#39;],
];
 
$x =15.73;
$y = 5.62;
//在外
$x = 9.97;
$y = 4.96; //在内
Nach dem Login kopieren

 PHP bestimmt, ob ein Punkt innerhalb oder außerhalb der Polygonfläche liegt

Weitere PHP-Kenntnisse finden Sie unter PHP-Tutorial!

Das obige ist der detaillierte Inhalt vonPHP bestimmt, ob ein Punkt innerhalb oder außerhalb der Polygonfläche liegt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage