問題タブ [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 にはジオメトリ用の優れたライブラリがあります。SVG 画像を描画することもできます。私のプロジェクトでそれを使用したいのですが、私にとっては本当に奇妙に機能します(下の画像を参照)。
したがって、2 次元空間で正方形の多角形として表される 3 つのピクセル ポイントがあります。
pic 1
それらからユニオンを取得し、それを単純化して、スケーリングすると次のような三角形が得られるようにします
pic 2
しかし、これを取得します:
ここで、黄色の点線はユニオン、緑色は単純化です。
ソースコード:
少なくともブースト 1.47.0 と、 boost/geometry/extensions/io/svg/からの 3 つのファイルが必要です。
では、形を整える意味が欲しいように単純化するにはどうすればよいpic 2
ですか?
アップデート
新しいコードを作成し、正しく動作し、十分にテストしました:
そして、このコードはそのような画像を作成します:
3 ポイントの場合は、@J と同様の画像を返します。Calleja の答え:
c++ - それは私ですか、それとも Boost Track SVN (Boost Geometry Extension Dissolve) の一部はコンパイルできませんか?
ブースト ジオメトリのディゾルブはここで少し説明されています。今必要なのはその SVN ホームですが、インクルードするとすぐに#include <boost/geometry/extensions/algorithms/dissolve.hpp>
コンパイル エラーが発生します (エラー C4430、C2146、および C2061)=( パッチを提供できる人はいますか?
サンプルコードは、たとえばここにあります
エラー:
最小限のコードは次のようになります (VS2010 では警告エラーで失敗することがテストされています):
c++ - Boost::Geometry交差点が期待どおりに機能しない
いくつかの長方形をboost::geometryと交差させるための小さなテストアプリケーションがあります。
何か間違ったことをしなければなりません。結果は次のようになると思いますが、平行な長方形の交点は常に4 + 1ポイントの長方形である必要があり、エッジにあるため、次の(35 30, 35 40, 25 40, 25 30, 35 30)
ようなポイントを含む10ポイントの長さのポリゴンが得られます。交差点ではまったく。それをSVGに入れると、長方形は期待どおりのように見えます。50 0
50 0
何が間違っている可能性がありますか?バグである場合、boost::geometry
どうすればそれを確認できますか?(現在1.48を使用しています。)バグの場合、問題を回避する方法はありますか?
c++ - ジオメトリ+WGS84をブーストしますが、緯度と経度はありますが、高度はありませんか?
WGS84楕円体に対して、サーフェス上のポリゴン内のポイント、ポイント間の距離計算、デカルト座標への変換、デカルト座標からの変換など、いくつかの計算を実行しようとしています。基本的に必要なことを実行するジオメトリをブーストするGIS拡張機能があるようです。ただし、高度をデカルト座標との間で変換するようには見えませんが、X/YとLat/Lonのみです。私は何かが足りないのですか?これは可能ですか?誰か提案はありますか?
c++ - boost :: geometry:for_each_segmentを実行する方法は?
how boost::geometry
私はのが機能していないことを理解しようとしfor_each_segment
ます。ドキュメントにfor_each_segment
は、ジオメトリとファンクターが必要であると書かれています。私の例では、このファンクターが呼び出さpolylength_helper
れます。このスニペットがコンパイルされていない限り、コンパイルされるまで単純にするために、そこで数値をインクリメントするだけです。
まあ、これはコンパイルされません。私clang
はより理解しやすい出力に使用しました、それは言います:
誰かが私を助けることができますか?referring_segment
特に、メッセージのどこから来たのかわかりません。
ドキュメントの例を次に示します。
しかし、sを除いて、これが私のバージョンとどのように異なるのか理解できませんtypedef
。
c++ - Boost.Geometry を使用してリングが別のリングに含まれているかどうかを確認するにはどうすればよいですか?
Boost.Geometry ライブラリを使用して、リングが別のリングに含まれているかどうかを判断しようとしています。
次のコードを書きました。
ただし、次の静的アサーションに失敗するため、(Boost 1.48.0 では) コンパイルされませんwithin
。
within
ポイントが別のジオメトリ内にあるかどうかのチェックのみをサポートしているようです(ドキュメントによると)。
リングをラインストリングとして扱うことを考えていたので、intersect
リングの最初のポイントが他のリング内にあるかどうかを確認します ring
しかし、それぞれを a にコピーすることを避けることができるかどうかはわかりませんlinestring
。
within
for two ringの機能を (妥当なパフォーマンスで) 達成する方法はありますか?
c++ - ベクトルの複数のレイヤーを非表示にし、単一の範囲として公開するBoost.Rangeを作成するにはどうすればよいですか?
変更できないレガシークラス階層があります。外部ライブラリの要件のため、LineとRingのBoost.Rangesを定義する必要があります。どちらも、1回の実行でポイントのみを公開します(つまり、LineとRingの両方で、Boost.Range of Pointsである必要があります)。 。
説明するための擬似コード:
ポイントは直接保存されるため、ラインは簡単です(Boost.Rangeを使用してこれを正常に実行しました。例を参照してください)。ただし、各ラインのポイントに直接到達する必要があるため、Ringでこれを行う方法がわかりません。
boost-geometry - Boostジオメトリを比較するにはどうすればよいですか?
私はこれらのブースト::geometry:: model :: ringを2つ持っており、それらが同じかどうかを確認しようとしています。これを理解できる組み込みのブーストジオメトリ比較関数/メソッドはありますか?