ホームページ > バックエンド開発 > PHPチュートリアル > PHP は、ポイントがポリゴン領域の内側にあるか外側にあるかを判断します。

PHP は、ポイントがポリゴン領域の内側にあるか外側にあるかを判断します。

藏色散人
リリース: 2023-04-08 06:18:02
転載
4894 人が閲覧しました

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 = [
    [&#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; //在内
ログイン後にコピー

PHP は、ポイントがポリゴン領域の内側にあるか外側にあるかを判断します。

PHP関連の知識の詳細については、次のサイトを参照してください。 PHP チュートリアル !

以上がPHP は、ポイントがポリゴン領域の内側にあるか外側にあるかを判断します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
PHP 拡張子 intl
から 1970-01-01 08:00:00
0
0
0
phpのデータ取得?
から 1970-01-01 08:00:00
0
0
0
PHP GET エラー レポート
から 1970-01-01 08:00:00
0
0
0
phpを上手に学ぶ方法
から 1970-01-01 08:00:00
0
0
0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート