問題タブ [clipperlib]
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.
intersection - クリッパーを使用して、ポリゴンがそれ自体と交差しているかどうかを確認することは可能ですか?
Clipper を使用して、ポリゴンの輪郭がそれ自体と交差しているかどうか (複雑なポリゴンか単純なポリゴンか) を確認できますか?
ポリゴンが無効にならないことはわかっていますが、私の場合、自己交差ポリゴンを避けたいと考えています。
c# - 間違った結果を与える接触ポリゴンのマージ
ポリゴンのリスト (IntPoints のリストのリストとして定義) を指定して、それらのいずれかが接触しているかどうかをチェックし、接触している場合はそれらを単一のポリゴンにマージするコードを作成しようとしています。これを行うために、私はすでに次の2つの方法を試しました:
と
現在、これらは両方ともポリゴンを非常に簡単にマージしますが、ポリゴンの空きスペースは無視され、空きエリアは単純に単一のポリゴンに結合されるため、少し過剰です。つまり、次のようになります。
起こります。これらの 2 つのポリゴンが互いに接触していないため、これは明らかに間違っています。どちらの方法でも同じ結果が得られます。結果は入力と同じになります。これを修正する方法はありますか?ソリューションはクリッパー ライブラリを使用する必要はありません (私はそれと結婚していません) が、ポイント入力のリストによって定義されるポリゴンを使用するものが必要です。そしてy。
編集この問題は、他のポリゴンの内側にポリゴンがない場合にも発生することに気付いたので、解決策は常に「塗りつぶされた」編集編集です。これは、入力がどのようなものかの例でもあります
これが説明する入力は、穴が開けられた正方形です。
c# - 曲面上のポリゴンの結合
Google Earth にインポートしたいポリゴン (c#) をマージするためのクリッパー ライブラリを試しました。2 つの円の平面サンプルで動作しましたが、X と Y として経度と緯度を使用すると 2 つの問題があります。
- Clipper は long as データ型のみをサポートします (Clipper に値を渡す前に乗数を使用することで回避できます - それについては既に質問がありますが、2 番目のポイントには対応していません。
- クリッパーは表面が平らであると想定しているため、出力座標は期待される場所ではありません。X と Y を経度と緯度と考えて、値 x を追加することはできません。赤道でも機能する可能性がありますが、北上すると経度に同じ値を追加すると、距離が短くなります。
そのシナリオの実装/ライブラリが既にあるかどうか疑問に思っていました。
更新: 使用されたソース コードが要求されたため、関連するコードを含む小さなサンプル アプリケーションを作成しました。
更新 2: 円の作成方法に実際にエラーがありました。修正により、円が作成され、正しくマージされます。
メルカトル図法を使用して、上の画像の円の点を平面に投影できることがわかりました。その後、Clipper を使用してマージを行うことができます。最後に、すべてのポイントが再び球に投影されました (メルカトル投影の逆)。
これは回避策になります (より詳細にテストする予定です)。したがって、質問は一種の回答ですが、回避策が少ない他のソリューションがあれば興味深いでしょう.
c# - 内側の境界を持つ Google Earth KML の Clipper ポリゴン ユニオンの結果を使用する
ポリゴンを、穴ができる 1 つの領域にマージしたいと考えています。クリッパーはこれを行うことができますが、結果として得られる 2 つのポリゴンを Google Earth で使用すると、Google Earth がこれらのポリゴンを別々に扱い、それらを互いに重ねるだけであるという問題があります。KML では、ポリゴンの OuterBoundary 要素と InnerBoundary 要素を作成できます。問題は、Clipper の結果を使用して、何が内側で何が外側の境界であるかをどのように知るかということです。言及すべきもう 1 つのこと: 何らかの方法で決定できたとしても、実際の Clipper ユニオン コールでは、数千の円ポリゴンを使用します。したがって、穴のある複数の別々の領域があります。
マージ後:
4 つの単純な形状を含むコードを次に示します。
更新: KML には、OuterBoundaries と InnerBoundaries という 2 つのポリゴン リストのセットが常に存在します。ポリゴンを再帰的に解析し、最も外側のポリゴンに内側のポリゴンがあるかどうかを確認しました。最も外側の内側のポリゴンは InnerBoundary です。他のすべての内側のポリゴンは、再び OuterBoundary ポリゴンとして開始されます。非常に大きなポリゴンのセットに関するいくつかの問題を見つけ次第、コードを投稿します。
c++ - Clipper を使用して 2 つのポリゴンが交差しているかどうかを判断するにはどうすればよいですか?
Clipper を使用しており、2 つの (マルチ) ポリゴンが交差しているかどうかを判断したいと考えています。
私の期待は、図書館がこの質問をする素敵で抽象的な方法を持っているだろうということでしたが、そうではないようです。
メソッドが役立つかもしれないと思ったのArea()
ですが、 でしか機能せずPath
、Execute()
メソッドが を返しますPaths
。
この問題を示す次の M(ほぼ)WE を作成しました。
javascript - ラインをシェイプの輪郭に沿わせます
ベクターデータに基づいており、さまざまなブール演算を使用するアプリに取り組んでいます。これらのブール演算には、 clipperというライブラリを使用しています。ここで、Clipper で行う方法がわからないベクトル操作を行う必要があります。常に閉じた多角形の内側に留まらなければならない 2 点からなる直線があります。これが意味するのは、次の画像です。緑の線は閉じた多角形で、赤の線は直線です。赤い線が緑のポリゴンの外側にある場合、緑のポリゴンの輪郭をたどる必要があります。
これをアーカイブする方法がわかりません。クリッパーまたはおそらく別のライブラリでこれを行う方法についての提案は非常に役立ちます!