何らかの形で線が多角形を通過しているかどうかを確認します

王林
リリース: 2024-02-09 21:45:04
転載
944 人が閲覧しました

何らかの形で線が多角形を通過しているかどうかを確認します

質問内容

画像(もうすぐビデオフレームになります)上の2点間の経路を見つけるプログラムを作成しています。私が行うことは、ポリゴン オブジェクトを使用してパス間の障害物を特定し、必要に応じてそのポリゴン オブジェクトを使用して回避することです。私のコードは次のとおりです:

リーリー

現時点で唯一つまずいているのは、長方形、正方形、円などの単純な図形です。すべてがうまく機能したら、ビデオに切り替えるつもりです。この問題は、2 つの部分が長方形の対角線である場合に、関数 getpolygonsinway のリスト内包表記 line.crosses(polygon) が false を返すときに発生します。ドキュメントを見ましたが、このケースを正しく把握するために何を使用すればよいのかわかりません。そこでここで質問させていただきました。

編集: 要求に応じて、サンプル ポリゴン、開始点、および終了点は次のとおりです:

リーリー

上記のコードを使用して、getshortestpath(getpaths(start, end, Polygons, [])) を実行し、次のパスを取得します。 [(440, 35), (411, 182), (210, 335), (90, 600)]


正解


##ラインが渡された多角形の内側にあるかどうかをチェックする

line.within(polygon) メソッドを見つけました。なぜ以前は見なかったのかわかりませんが、今は見ることができます。リスト内包 if 条件で line.crosses(polygon) または line.within(polygon) を実行することで、四角形の周囲のパスを取得することができました。これから他の基本的な形状でテストし、その用途を無限にテストするつもりです。

以上が何らかの形で線が多角形を通過しているかどうかを確認しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!