9

三角形のストリップを表す頂点を持つ配列があります。ポリゴンに変換する必要があります。逆の解決策はたくさんありますが、上記の問題の解決策を見つけることができませんでした。または、それは簡単すぎるかもしれません、そして私はそれを見ることができません。助けてください。

OpenGL =compatible、 http://en.wikipedia.org/wiki/Triangle_stripを参照してください

例:このストリップの場合http://en.wikipedia.org/wiki/File:Triangle_Strip_Small.png 出力ABDFECまたはACEFDBが必要です

4

3 に答える 3

6

私は以下がうまくいくはずだと信じています:

頂点のリストをウォークスルーします。ポリゴンに最初のポイントを追加します。スタックの 2 番目のポイントをプッシュします。3 番目のポイントをポリゴンに追加します。リストの最後に到達するまで、スタック上のポイントのプッシュとポリゴンへの追加を交互に繰り返します。リストの最後に到達したら、スタックのポイントをポップしてポリゴンに追加します。

于 2010-08-20T14:47:52.537 に答える
1

代替テキスト

三角形のストリップは常に同じ方法で接続されていると仮定します (これは OpenGL に当てはまると思います)。

  • 「下」の頂点は常に 2 つ離れています: A、C、E、...
  • 「上」の頂点は常に 2 つ離れています: B、D、F、...

「下」リストを取り、「上」リストの逆を追加します。(例ではACEFDB)


または、より直接的には、文字の代わりにゼロベースのインデックスを使用します:

// do "bottom"
for ( i = 0; i < N; i += 2 )
  addVertex( i )

// do "top"
largestOddNumberLessThanN = N % 2 == 0 ? N - 1 : N - 2;
for ( i = largestOddNumberLessThanN; i >= 0; i -= 2 )
  addVertex( i )
于 2010-08-20T15:00:30.603 に答える
0

形状が特にシンプルな場合はショートカットもあるかもしれませんが、一般的には次のようにしたいと思います

  • 三角形のリストから頂点とエッジのリストを作成します。これには、共有ポイント(完全に一致しているので、ある種のあいまい検索を必要とせずにハッシュで見つけることができる)と共有ライン(簡単です。同じペアの共有頂点の間に2つのエッジを描画しないでください)の検出が含まれます。 。
  • 左上のポイントを見つけます。
  • 可能な限り左上に移動し、反時計回りの方向にあるエッジを見つけます。
  • 次の頂点まで歩きます。
  • 可能な限り前のエッジを2倍にする次のエッジを見つけます。
  • 左上のポイントに再び当たるまで続けます。
于 2010-08-20T14:23:28.137 に答える