コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

うまくいかなくて悩んでいるけれども途中で掲載。

otk_base_ss02
前回の「IronRuby で OpenGL」の続き。といっても、表示して確認しながら作りたかったプログラムの方。
何かというと2つの三角形が重なっているとき、それを合成した図形を計算したいというもの。シンプルながらやってみるとなかなかに難しくて。久々にベクターや外積などと取っ組み合い。

なんでもいいから合成後の形状が得られれば良いというわけでなく、2つの要求が存在している。

1) 合成後は細かい三角形の集合として得られること
2) 分割後の三角形は接するもの同士頂点を共有し同じ辺の長さであること

1) はとりあえずこれを満たせば後は繰り返しでどんな形でも作業することが可能になるので。

otk_base_ss03
2) が地味にやっかいなのだけれども、これは最終的に欲しいのが合成した形状の外周だから。
三角形の集合にしておけば、線分に分割して見たとき「共有されていない辺が外周」であると後で抽出できるため。

otk_base_ss04
ここ一週間ぐらい取り組んでいて大分形になってきたけれども、まだまだ不完全。
三角形二つがくるくると回りながら移動し交わったら合成処理を施すようなデモを作って確認しているところ。くるくる回りながらということで、任意の状態を幾重にも作りだすことと等価。全ての場面でうまくいくことを見たいのだけれども、まだうまいこといかないパターンがあって割としょっちゅう破綻している。
ある程度のテストパターンは作って作成していったのだけれども、その範囲内でうまくいっても任意形状ではダメというのはありがちなれど辛いのう。

今の段階でのソースコード。くるくる回るデモを含んでいるので IronRuby で OpenGL のテストコードその2 としてもどうぞ。

Download: ironruby_gl_fw_02.zip (11kb)

その道の偉い人からみたらもっとスマートな手順があるんだろうなあ。
というか、力業なコードになりつつあるのが切ない。

Leave a Reply