1

ジェネレーター (ブラシと考えてください) を定義する区分曲線と、ブラシがたどるパスを表す区分曲線があります。ジェネレーター カーブがパスを横切ってスイープされるときに作成される境界を生成したいと考えています。

これは、エンジニアリング CAD のようなアプリケーション用です。一般的なアルゴリズムまたは任意の言語のコード サンプルを探しています。

4

3 に答える 3

4

次の論文をお勧めします。

  • Jae-Woo Ahn、Myung-Soo Kim、Soon-Bum Lim による「2D 曲面オブジェクトのおおよその一般的なスイープ境界」
  • Thierry Pudet による「圧力ブラシストロークのリアルタイム フィッティング」
  • 「図形仕様へのブラシ軌道アプローチ: いくつかの代数解法」
于 2015-04-17T13:24:33.433 に答える
1

私たちが使用した実際の回答は複雑すぎて、完全に投稿することはできませんが、要約することはできません。

  1. 変換されたパスに沿って一定間隔で曲線をサンプリングします
  2. 各サンプルの頂点を前後のサンプルに結合して、三角形のメッシュを作成します
  3. 隣接する三角形の法線が反対方向を指しているシルエット エッジの候補を特定します
  4. スイープライン アルゴリズムを使用して、交点ですべてのエッジを分割します。これは、BigRational アルゴリズムを使用してこれを行う必要があることが判明したため、トリッキーな部分です。または、微妙な数値エラーが忍び寄り、トポロジーが壊れました。
  5. 分割されたエッジを平面グラフに変換します
  6. いくつかの外部テスト ポイントに最も近い分割エッジを見つける
  7. グラフの外側を歩き回ります。(ここでも、すべてのテストは大きな有理数を使用して行われます)

    BigRational の計算が原因で、アルゴリズムのパフォーマンスは優れたものではありません。ただし、浮動小数点でこれを行うために多くの方法を試しましたが、結果のグラフが平面ではない数値エッジのケースが常に発生しました。グラフが平面でない場合、その外側を歩き回ることはできません。

于 2014-11-19T08:52:33.450 に答える