1

2D セグメントが 2D リング (凸) と重なっている (純粋な重なり、隣接または接触していない) かどうかを確認するにはどうすればよいですか?

私の最初のアプローチは、次のものを使用することでした。

  1. disjointしかし、接触/隣接はばらばらと見なされないため、機能しませんでした

  2. オーバーラップしかし、接触/接触はオーバーラップと見なされるため、機能しませんでした

他のいくつかの組み合わせを試しました(たとえば、で使用)が、簡単な方法が見つかりません。簡単に言えば、計算ジオメトリ アルゴリズムを実装せずに、いくつかのブースト ジオメトリ アルゴリズムを使用するということです。

解決策は戦略のどこかにあると思います...

問題を再定義できると思います:隣接するリング (ポリゴン) を見つけるにはどうすればよいですか? (注: エッジから縮退リングを作成できます)。

ここに私が欲しいものの図があります。赤のセグメントはOVERLAPを返し、青のNO​​ OVERLAPを返します。

ここに画像の説明を入力

システム: Boost_1.54、CentOS-5、gcc-4.7.2

4

1 に答える 1

1

はい、現在 (1.55) touches() はセグメント/リングには実装されていません。1.56 でより多くのバリアントをリリースする予定です。おそらくセグメント/リングではありませんが、ラインストリング/リングを使用できるはずです。ライブラリの開発バージョンを使用してテストできます。

http://github.com/boostorg/geometry/tree/develop

また、touches() の CCW ポリゴンに関する問題は、develop ブランチで修正されています。

于 2014-04-14T20:38:25.977 に答える