問題タブ [boost-polygon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2452 参照

c++ - 一般閉多角形を線分で分割する方法

線分によってポリゴンを 2 つのセット (左/右) に分割するための優れた (堅牢な) アルゴリズムが必要です。私のポリゴン表現は、単に整数座標のリスト(時計回りに並べられ、自己交差することはありません)であり、線分は始点と終点で表されます。線は常にポリゴンの外側で開始および終了します。つまり、ポリゴンと偶数回交差します。

次に例を示します。

ポリゴンは、それぞれ 2 つのポリゴンの 2 つのセットに分割する必要があります。

アルゴリズムの出力は、2 つのセット (時計回りに移動) である必要があります。

  • 左:HABCH、FGDEF
  • 右:HCDGH、BAB、FEF

ポリゴンを反復処理し、ポリゴン セグメントが線と交差しているかどうかを確認し、境界のケースを尊重することで、ポイント AH を特定できます。各マルチラインがどちらの側に属しているかを判断することもできます。しかし、私の人生では、これらのセグメントをどのようにつなぎ合わせるかを決めることはできません.

汎用のクリッピング ライブラリを提案する前に: ポリゴンを互いにクリッピングするのに非常に優れたブースト ポリゴンを使用していますが、線分に対してポリゴンをクリッピングできるライブラリが見つからず、一般的には不可能です。線分をポリゴンに変換して、クリップできるようにします。

編集:FEFと、ポリゴンが線分の両側にパーツを持つことができるという事実を見逃していました。

0 投票する
2 に答える
158 参照

c++ - 一連の点を指定して、ボロニ近似を使用して空間を多角形領域に分割する

空間を多角形のセットに分割しようとしています。各多角形は、入力ポイントのセットの 1 つのほぼボロニ セルです。

この目的で Boost::Voroni を使用しようとしていましたが、このライブラリを使用した場合の出力は複雑であり、必要なものを得るには多くの余分な労力が必要です。

BOOST::voroni ダイアグラムから必要なものを取得するための最良の方法を誰かが知っているかどうか、または私が探しているものを直接取得できるよりも単純なライブラリを誰かが知っているかどうか疑問に思っていましたか?

ここに私がやろうとしていることを示すいくつかのコードがあります、

ブーストは私のニーズに対して過度に一般的で複雑であるため、これらすべてを単純に実行し、ポリゴンのセットのみを返すライブラリまたはアルゴリズムを好みます。私のオプションは何ですか?

0 投票する
0 に答える
137 参照

c++ - セットはboost::PolygonSetのメンバーではありません

PolygonSet の & 演算子をオーバーロードしようとしていますが、次のエラーで終了します。boost::PolygonSet には set 関数がないことは理解できますが、この問題を修正するための入力を誰でも提供できます。view_as を試しましたが、成功しませんでした。

コード:

エラー:

エラー: 「struct boost::enable_if, boost::polygon::point_data >」に「type」という名前の型がありません</p>

コンパイル時のメッセージ

/u/logic/depot/boost_1_57_0/include/boost/polygon/detail/polygon_set_view.hpp:198:5: 'geometry_type_1& boost::polygon::self_assignment_boolean_op(geometry_type_1&, const geometry_type_2&) [with geometry_type_1 = std::vector から必要] ; geometry_type_2 = boost_geom_api::PolygonSet; int op_type = 1]' /u/logic/depot/boost_1_57_0/include/boost/polygon/polygon_set_concept.hpp:419:90: 'typename boost::enable_if::type, typename boost::polygon::is_any_polygon_set_type から必要: :type>::type, geometry_type_1>::type& boost::polygon::operators::operator&=(geometry_type_1&, const geometry_type_2&) [with geometry_type_1 = std::vector; geometry_type_2 = boost_geom_api::PolygonSet; typename boost::enable_if

boost::polygon::is_mutable_polygon_set_type::type, typename boost::polygon::is_any_polygon_set_type::type>::type, geometry_type_1>::type = std::vector]' /polygon_set.cpp:160:13: から必要ここで /u/logic/depot/boost_1_57_0/include/boost/polygon/polygon_90_set_traits.hpp:57:51: エラー: 'boost::polygon::get_coordinate_type::traits_type に 'coordinate_type' という名前の型がありません {aka struct boost:: polygon::polygon_set_traits}'</p>

'typename boost::enable_if::type, typename boost::polygon::is_any_polygon_set_type::type>::type, geometry_type_1>::type& boost::polygon::operators::operator&=(geometry_type_1&, const geometry_type_2&) から必要[with geometry_type_1 = std::vector; geometry_type_2 = std::vector; typename boost::enable_if::type, typename boost::polygon::is_any_polygon_set_type::type>::type, geometry_type_1>::type = std::vector]'</p>

0 投票する
1 に答える
175 参照

c++ - ブースト ポリゴン ライブラリでの view_as の使用

誰でもどのようview_asに使用できるか教えてもらえますか? それともブースト ポリゴン ライブラリの例でしょうか。

ドキュメントでは、あるものから別のものへの型キャストができると述べられています。

http://www.boost.org/doc/libs/1_58_0/libs/polygon/doc/gtl_polygon_90_concept.htm

0 投票する
0 に答える
340 参照

c++ - Boost.polygonでポリゴンポイント(polygon_set_data内)を反復する方法は?

a のポイントを反復するにはどうすればよいpolygon_set_dataですか?

polygon_set_dataを使用してポリゴンを取得しvoid get(output_container& output) const、結果を使用して以下の例のようにポイントを反復処理することは可能ですが、これによりセットが変更されるため、そのままにしておきたいと思います。

polygon_set_dataメソッドを使用してa のエッジを反復処理することもできますがbegin()、エッジはソートされません。