問題タブ [cgal]
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++ - CGAL 初心者の質問: 交差するセグメントはどれですか?
私は一連のセグメント (それぞれが 2 つの点で定義されている; 2D) を持っており、セグメント x ごとに、x と交差している他のセグメント y1、...、yn の数を知りたいと考えています。CGAL でそれを効率的に行うにはどうすればよいでしょうか。
CGAL ライブラリとコンピュータ ジオメトリの経験はまったくありません。上記のことを行うためのアルゴリズムが必要です。したがって、カスタマイズされた関数を実装する代わりに、このライブラリを使用する方が効率的であると考えました。
CGALの例のsweep_line.cppは、一連のセグメントのすべての交点を取得する方法を示しています。ポイントには興味がないので、ポイントとセグメントをチェックして、各セグメントの交点の数を取得する必要があります。しかし、CGALでそれを行う方法がわかりません。また、より効率的な方法があると思います。つまり、ポイントの計算を回避し、見つかったポイントと交差しているかどうかを新しいチェックですべてのセグメントにわたって反復します。
任意のヒント?ご意見ありがとうございます。
サーシャ
PS: もう 1 つの初心者向けの簡単な質問: 以下の結果がマイナス記号で出力されるのはなぜですか?
3 つの交点が見つかりました: -21/-7 -21/-7 -3/-1 -5/-1 -35/-7 -35/-7
PS2: タイトルと最初の行が同じ問題を説明していないことに気付きました。テキストで説明されているように、どのセグメントが x と交差するかを知る必要はありませんが、セグメントの数だけを知る必要があります。
swig - CGAL リンカ エラー - シンボルが見つかりません: ___gmpq_clear
CGAL を既存のシミュレーション プロジェクトに組み込もうとしていますが、リンカーに問題があります。Python シミュレーション keiro.py は、swig ラッパーで physicals.cpp というファイルを使用して、一般的な操作を高速化します...physics.cpp ファイルをコンパイルすることはできましたが、Python シミュレーションを実行すると、次のメッセージが表示されてエラーが発生します。
トレースバック (最新の呼び出しが最後): ファイル "keiro.py"、2 行目、from world import World、ビュー ファイル "/Users/marcstrauss/Desktop/keiro/world.py"、9 行目、from fast.physics import Vec2d, Particle, World as PhysicsWorld File "/Users/marcstrauss/Desktop/keiro/fast/physics.py", line 7, in import _physics ImportError: dlopen(/Users/marcstrauss/Desktop/keiro/fast/physics.so , 2): Symbol not >found: _ _gmpq_clear 参照元: /Users/marcstrauss/Desktop/keiro/fast/_physics.so
オブジェクト ファイルで ___gmpq_clear シンボルが認識されないというエラーは、CGAL に正しくリンクしていないことを意味していると思います。これが私のメイクファイルです:
すべて: physicals.py _physics.so graphutils.py _graphutils.so
_physics.so: setup_physics.py physicals_wrap.cxx physicals.cpp python setup_physics.py build_ext --inplace -I/opt/local/include/
_graphutils.so: setup_graphutils.py graphutils_wrap.cxx graphutils.cpp python setup_graphutils.py build_ext --inplace -I/opt/local/include/
physicals.py physicals_wrap.cxx: physicals.i physicals.h swig -python -c++ physicals.i
graphutils.py graphutils_wrap.cxx: graphutils.i graphutils.h swig -python -c++ graphutils.i -I/opt/local/include/ clean: rm -f physicals.py rm -f graphutils.py rm -f *.cxx rm -f *~ *.pyc *.pyorm -f *.so rm -rf ビルド
これを修正する方法について誰かが私にアイデアを持っていますか? ありがとう!
c++ - Vertex_handles をドローネ三角形分割のポイントに取得する
のすべての頂点を繰り返し処理したいのですが、CGAL::Delaunay_triangulation_2
すべての頂点ハンドルの取得に関するドキュメントが見つかりません。
これについて見つけたドキュメントでは、三角測量を反復処理する方法が説明されていました。
ただし、イテレータから Vertex_handle に到達する方法に関するドキュメントが見つかりません
python - _swig_getattr 属性エラー
Python コードで使用するために swig を使用して ac 関数をラップすると、属性エラーが発生します。私はチャップと一緒にうまく動作する他の機能を持っていますが、これが機能しない奇妙な理由があります:/
CGAL を使用して、すべての粒子の凸包を決定しようとしています (chap)。以下は chap 関数とトレースバックです。
iphone - iOS用のCGALの代替品
通りを定義するノードのセットがあります。各ノードには緯度と経度があります。また、緯度と経度のユーザーの場所もあります。私の意図は、ノードの各ペアによって定義されたセグメントのボロノイ図を作成し、次にどのノードのユーザーの場所に最も近いかを見つけることです。
このタスクはCGALライブラリで実行できるようです。私がiOS環境用にコンパイルしている間、おそらく皆さんは、iOSに対してすでにコンパイルされている、または最初からObjectiveC環境で使用することを目的としたライブラリへのリンクを提供できるでしょう...
CGALをコンパイルしても困ってしまうのではないかと心配です。ありがとう!
PSまた、おそらくあなたはより良い解決策を念頭に置いています。ここで自由に綴ってください。
c++ - CGAL の Edge_iterator からソース ポイントとターゲット ポイントを取得する方法
いくつかの点で Delaunay 三角形分割があり、その中のすべてのエッジを長さの昇順で反復処理して、最小スパン スレッドを構築したいと考えています。
次のアプローチを試しましたが、コンパイルできません。
のメンバーではないsortFunction
と言って、コンパイルは で失敗します。ただし、ドキュメントはここで私を混乱させます。source
Edge_iterator
CGAL のドキュメントによると、エッジ イテレータの値の型はハーフエッジです。
ポイントにアクセスして使用できるsource()
と言われています。target()
しかし、そうではないようです。私はここで何を台無しにしていますか?
c++ - edge_iterator から vertex_handle を取得する
Delaunay 三角形分割のエッジの端点ごとに vertex_handle を取得するのにかなり苦労しています。私はこれに数時間頭を悩ませていたので、あなたの誰かがこの一見些細な問題で私を助けてくれるかもしれないと思いました:
Edge_iterator を逆参照するドキュメントによると、Edge_handle を取得する必要があり、Edge_handle にはエンドポイントを取得するためのメンバー source() および target() が必要ですが、コンパイルされず、間違っているようです。上記のようにデリファレンスすると、これらのメンバー関数を持たない pair<> が得られます。
私が間違っていることは何か分かりますか?
c++ - CGALによる主成分分析を使用した点群の位置合わせ
3Dオブジェクトの表面にランダムにサンプリングされたポイントのセットがあります。2つの異なるオブジェクト間の類似性を計算できるようにしたいと思います。これを機能させるには、まず、比較する両方のオブジェクトのサンプルポイントが同じ回転とスケールであることを確認する必要があります。これは、主成分軸をx / y / z軸に沿って配置し、最長の主成分が単位長になるようにスケーリングすることで実現できると思いました。
最初にポイントセットの図心を計算し、原点が新しい図心になるようにすべての点を変換します。
CGAL linear_least_squares_fitting_3関数を使用して主成分分析を行います。これにより、ポイントを通る最適な平面が得られます。両方の基本ベクトルの外積をとることにより、この平面の法線を計算します。
この関数は、オブジェクトを同等dir2vec
のオブジェクトに変換します(私はOpenSceneGraphグラフィックエンジンを使用しています)。最後に、次のコードを使用して、すべてを単位軸に回転させます。CGAL::Direction_3
osg::Vec3d
ここに、osgPoints
がありvector<osg::Vec3d>
ます。テストの目的で、回転したポイントの図心を元の位置に変換して、両方のポイントクラウドが重ならないようにします。
それをテストするために、同じポイントセットの2つのコピーを使用しますが、1つは変換(回転および変換)されます。上記のコードは回転を元に戻す必要がありますが、結果は私が期待したものではありません。この画像を参照してください。赤い線は、最適な平面のベースベクトルとその法線を示しています。linear_least_squares_fitting_3
平面の一方が他方に対して少し回転しているため、への両方の呼び出しの結果はわずかに異なる答えを与えるように見えます。
これは、両方のオブジェクトが重心を原点として配置されている別の画像です。これで、法線と基本ベクトルが一緒になっていることがはっきりとわかりますが、点はそうではありません。
なぜこれが起こるのか、そしてどうすればそれを防ぐことができるのか誰かが知っていますか?
cmake - トレースを有効にして CGAL をビルドする方法 (特に CGAL_NEF_TRACEN)
CGAL ライブラリで発生するアサーション失敗の例外をデバッグしようとしています。CGAL は、ライブラリ全体にデバッグ ステートメントとトレース ステートメントを適切に配置しており、これを使用して自分のケースで何が起こっているのかを理解できます。しかし、多くの努力にもかかわらず、これらのデバッグおよびトレース メッセージを有効にする適切なコンパイル時フラグを見つけることができませんでした。私は、CGAL_NEF_TRACEN
マクロで出力されるトレース メッセージに特に関心があります。cmakeオプションでコンパイルしようとしましたが、役に立ち-DCMAKE_BUILD_TYPE=Debug
ませんでした。私はcmakeの経験があまりありません。これを行う方法を知っているかどうか教えてください。
computational-geometry - CGAL: セグメントとポリゴンの交点?
多角形のセットがあり、それとセグメントの間の交差をテストしたいと考えています。マニュアルを確認しましたが、一致する機能が見つかりません。点、線、セグメント、三角形、平面の間の交点は存在します。また、ポリゴン間の交点もあります。私の質問は:
- そのような機能はありますか?
- そうでない場合は、ポリゴンをセグメントに分割し、これらのセグメント間で交差させる必要があるということですか? (私がこれをするのをためらう理由は、CGALが実際にこの方法を使用してポリゴン間の交差を行うのではないかと思ったからです。線とポリゴンを交差させるためのそのような関数がないのはなぜですか?)または他にもっと良いものはありますか?やり方?