2012-09-24

http://anond.hatelabo.jp/20120924001054

CG系はほとんど知らないからそれだけじゃ何が問題になってるのかわからん

とりあえずそのsubdivという操作定義(あるいは仕様)があるはずなので、それを丹念に追うしかないんじゃない?

原理的にあり得る立体(1次元2次元も含む)分割を全て網羅しているかもしれないし、制限があるかもしれない。

以下は勘で一般論を話すよ。

http://www.den.rcast.u-tokyo.ac.jp/~suzuki/class/dcomputing/doc/solidcad.pdf

の35ページに、(拡張オイラー操作空間の基底を構成すると書いてある。

基底というのはベクトル空間線形独立ベクトルの集まり3次元ならe_x, e_y, e_zとか)で、

イメージとしては何らかの意味での「最小構成要素」と思えばよい。

ここでは「立体を分割する」という操作の基底(最小構成要素)を構成できるか、という話で、

そこにオイラーの公式が使えるということっぽいね。

簡単のために、拡張なしのオイラーの公式v-e+f=2で考えると、位相的に正しい立体は全てこの公式を満たすわけで、

逆に、(位相的に区別できない)立体を(v,e,f)の3要素で識別できるということだろう(たぶん。証明はしてない)。

そうすると、「立体に(subdivなどの)何らかの操作を加えて別の立体を作る」という操作は、(v,e,f)の値を変更する

という意味になるわけだ。

そのような操作は明らかに「vを1増やす操作」、「eを1増やす操作」、「fを1増やす操作」の組み合わせとして表現できる。

これが「操作の基底」だ。

しかし、操作は必ずオイラーの公式を満たすように実行しなければならないので、基底は3つではなく2つになる。

(3次元空間に拘束が一つ入って平面(2次元多様体)になるようなもん)

まり、2つの基底操作を実装すれば、他の任意操作はその組み合わせとして実行できるようになるということ。

基底は任意に回転してよいので、上記資料の35ページでは各基底は「単一の要素を1増やす操作」にはなっていない。

これは物理的に自然操作が必ずしも「単一の要素を1増やす操作」ではないからだろうね。

というわけでともかく「基底操作を実装しろ」ということだろう。

組み合わせの「マクロ操作」としてどういうものを用意するかはCADソフトなりの定石があるだろう。

ベクトル空間でもいいんだけど、群論イメージが分かってると割と理解しやすいかもねえ。

  • ごめんなさい。 返信していただけるとは思ってなかったので、元記事消しちゃいました。すみません。 ご返信、ありがとうございます。 さて、完全に理解できてない気もするのですが...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん