Thursday, November 18, 2010

subdivisionの例

CGALには頻繁に使われる細分割手法が実装されていて,かつそこそこ高速に計算してくれるので非常に使いやすいです.ただマニフォールドのみという制約があった(と記憶している)ので,そこは使用者が実装しなければならない(はず)です.
使い方はPolyhedronと分割数を関数に渡すだけです.

たとえば以下のコードで3回のDoo-Sabinです.
まず,関数を使えるようにヘッダーをインクルードします.

#include < CGAL/Subdivision_method_3.h >

呼び出し側で以下のコードです.

Polyhedron P;
Build_mesh< HalfedgeDS > mesh;
P.delegate( mesh);

CGAL::Subdivision_method_3::DooSabin_subdivision(P, 3);


ここでは,Build_meshで六面体のPolyhedronを生成して,delegate関数でPにデータを渡しています.
0-3回の例が以下です.






以上.
簡単でしょ.

No comments: