ホームページ  >  記事  >  バックエンド開発  >  何らかの形で線が多角形を通過しているかどうかを確認します

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

王林
王林転載
2024-02-09 21:45:04947ブラウズ

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

質問内容

画像(もうすぐビデオフレームになります)上の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 までご連絡ください。