ラベル Geometry の投稿を表示しています。 すべての投稿を表示
ラベル Geometry の投稿を表示しています。 すべての投稿を表示

2011年4月4日月曜日

断面図の出力

3Dモデルの断面図を計算するコードをスケッチしてみた。



前回のsplitMeshをやっつけで書きなおしただけなのでコードは汚め。

3Dモデルのアウトプットとかに使うつもり。

ここからさらにsvgで出力し、
カッティングプロッタでプラ板等に切り出し、
積層していくとか。

2011年3月22日火曜日

三次元ボロノイ分割

half-edgeデータ構造の勉強に、Frederik Vanhoutte氏のコードをFlashへ移植してみた。



マウスプレスで母点追加、キープレスで更新のオンオフ

描画はテキトー
さらっと書くつもりが、完成間近で一度ミスってファイルを消したり、バグがとれなかったりで時間かかった。

2011年3月2日水曜日

Cinder上でnurbsを描く

普通にcinder上でopenglのgluNurbsSurfaceを使ってみただけ。特に変わったことはしてないけど、nurbs自体をはじめてさわったので、メモ。

openglのnurbsをcinder上で使用する。
参考にしたサイトは以下。

コードはこちら(study_NurbsApp.cpp)
SimpleGUIをいれておく必要あり
例のごとく、上のサイトからコピペしていろいろいじくり回しただけだけど。

気になった点は、軽量化のためnurbsをdisplayListにいれようとした時、デフォルトで設定されてるテッセレーションの挙動がおかしくなったところ。もともと、分割されすぎて重く感じてたので
gluNurbsProperty(nurbs, GLU_SAMPLING_METHOD,  GLU_OBJECT_PATH_LENGTH);
で切っておいた。

あと、ノットベクトルはここを参照。エセ理系の自分にはちょっとキツイ。とりあえず、制御点数+次数だけの要素数をもつ配列をつくり、要素を単純増加させてやればよさそう。例えば、制御点数6、次数4のときノットベクトルは
GLfloat knot1[10]={0.0, 0.0, 0.0, 0.0, 0.33, 0.66, 1.0, 1.0, 1.0, 1.0};
GLfloat knot2[10]={0.0, 0.0, 0.0, 0.0, 0.33, 0.66, 1.0, 1.0, 1.0, 1.0}; 
とか、
GLfloat knot1[10]={0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
GLfloat knot2[10]={0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; 
にしてやる。左から右に増加さえしていれば動くはず。