ホームページ > データベース > mysql チュートリアル > PHP を使用して点が多角形の内側にあるかどうかを判断するにはどうすればよいですか?

PHP を使用して点が多角形の内側にあるかどうかを判断するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-25 01:07:02
オリジナル
376 人が閲覧しました

How to Determine if a Point Lies Inside a Polygon Using PHP?

PHP を使用した多角形内の点の検索

点が多角形の内部にあるかどうかを判断することは、幾何学的計算における一般的なタスクです。 PHP でこれを実現する方法は次のとおりです。

緯度と経度の座標を持つ頂点の配列として表される多角形から始めます。さらに、類似した座標を持つ点があり、それが多角形内にあるかどうかをチェックしたいと考えています。

このチェックを実行するには、元々は別の言語で書かれ、PHP に変換された関数を利用します。

<code class="php">$isInside = is_in_polygon(
    count($vertices_x) - 1,
    $vertices_x,
    $vertices_y,
    $longitude_x,
    $latitude_y
);</code>
ログイン後にコピー

is_in_polygon 関数は次のアルゴリズムを実装します。

<code class="php">function is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)
{
    $i = $j = $c = 0;
    for ($i = 0, $j = $points_polygon ; $i < $points_polygon; $j = $i++) {
        if ( (($vertices_y[$i]  >  $latitude_y != ($vertices_y[$j] > $latitude_y)) &amp;&amp;
         ($longitude_x < ($vertices_x[$j] - $vertices_x[$i]) * ($latitude_y - $vertices_y[$i]) / ($vertices_y[$j] - $vertices_y[$i]) + $vertices_x[$i]) ) )
           $c = !$c;
    }
    return $c;
}</code>
ログイン後にコピー

$isInside 変数が true に設定されている場合、ポイントはポリゴン内にあります。

追加リソース:

さらにポリゴン関連の関数については、polygon.php クラスの使用を検討してください。ポリゴンの頂点を使用して初期化し、テスト ポイントを使用して isInside 関数を呼び出して、問題に対する別の解決策を取得します。

以上がPHP を使用して点が多角形の内側にあるかどうかを判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート