問題タブ [boost-geometry]
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.
c++ - Boost Geometry: ポリゴンとボックスの交点
Boost ジオメトリ ライブラリを使用してアルゴリズムをコーディングしようとしてきました (問題がある場合は、ボックス カウント アルゴリズムをコーディングしようとしています)。その一部は、ポリゴンの処理で構成されています。ポリゴンの境界と多数のボックス (メッシング) の交差を計算したいのですが、必要に応じてその外部リングを計算します。奇妙なことに、関数 intersects(box[i], polygon) intersects(box[i], exterior_ring(polygon)) と within(box[i],polygon) で同じ結果が得られます。完全にポリゴンの内側にあるボックスの場合、たとえば、true、false、true を取得する必要があります。境界上の 1 つに対して true、true、false。私が思うように計算しないのはなぜですか?
boost - ブースト ポリゴンのシリアル化
プロジェクトでブースト ジオメトリを使用しており、ポリゴンをシリアル化する必要があります。多くのブースト データ型に対して問題なくブースト シリアライゼーションを使用してきましたが、シリアライゼーション フォルダー内にヘッダーが見つからないため、ブースト ジオメトリは現在シリアライゼーションをサポートしていないようです。
これを達成するためのよく知られた方法はありますか?
ありがとう。
編集: バイナリ シリアル化の例:ブースト ポリゴンのシリアル化: リング
c++ - ポイントが boost::geometry::linear_ring 会計方向の内側にあるかどうかを判断する
ポイントがboost::geometryでポリゴン内にあるかどうかを判断したい。
関数boost::geometry::withinと typeを使用boost::geometry::linear_ring<boost::geometry::point_2d>
して輪郭を指定します。
輪郭の向きを考慮する必要がなければ、すべて正常に機能します。
しかし、私の場合、オリエンテーションを説明したいと思います。つまり、特定の輪郭の内部領域がその境界によって制限され、有限であると見なされる場合、逆輪郭の内部領域は無限である必要があります-初期輪郭の領域を補完します。
within
関数で輪郭の方向を考慮することは可能ですか?
次のコードで表現できます。
上記のコードの実行後、ret1
とret2
は両方ともtrue
. しかし、私は持っているでしょうret1 != ret2
。
ret1 != ret2
一般に、いつでも機能する必要がありますtestPoint
(ここでは、ポイントが正確に境界線上にある場合やポリゴンが縮退している場合など、境界線のケースは考慮しません...)
に渡すためにさまざまな戦略を試しましboost::geometry::within
たが、必要なものが得られませんでした。
内部のドキュメントには穴のあるポリゴンの例があるboost::geometry
ため、必要な機能または類似の機能が のどこかに実装されているようです。しかし、私は自分の場合にそれを使用する方法を理解していません。
非常に簡単な回避策もあります。輪郭の向きを決定するコードを書くだけです。within
次に、輪郭の向きに応じて、関数の結果を否定するか否定します。しかし、boost::geometry
すでに実装されている場合は、複製したくありません。
boost - ローカル ディスクでブースト ジオメトリを使用できますか
ジオメトリをブーストするのは初めてです。私の場合、大量のデータノードを処理する必要があるため、メモリに保存できません。ブースト ジオメトリをローカル ファイル システムと一緒に使用することはできますか?
c++ - boost::geometry 3D ポリゴン交差のコンパイル エラー
このコード スニペットは 2D バージョンでは問題なく動作しますが、3D バージョンではコンパイルされません。
このテンプレート エラー:
intersection
通話の何が問題なのか誰か教えてもらえますか? 私のアプリケーションは、平面ポリゴンの交点を見つけることです。Poly3D
一般に、平面である必要はないことがわかります。そのため、このエラーの原因になる可能性があります。平面 3D ポリゴン タイプを定義する方法はありますか?
c++ - boost::geometry::intersects は異なるジオメトリ タイプでは機能しませんか?
boost::geometry::intersects
セグメントがポリゴンと交差するかどうかを確認するために使用しようとしています。次のコードはうまく機能します。
ただし、行のコメントを外すとbg::intersects(poly1, s1)
、次のコンパイル エラーが発生します。
それはバグですか、それとも何かを忘れていますか?
ubuntu - boost/geometry.hpp: そのようなファイルまたはディレクトリはありません
ruby 用の c-extension をコンパイルしようとしています。ブースト ライブラリが必要です。
実行しましたsudo apt-get install libboost-all-dev
(おそらくboostライブラリがインストールされます)がmake
、拡張ライブラリで実行しようとするとboost/geometry.hpp: No such file or directory
. 私のMacBook Proでは、自作とbrew install boost
.
Ubuntu 12.04 を実行しています。
ヘッダーを c-extension に公開するために必要な他の構成はありますか?