tak0kadaの何でもノート

発声練習、生存確認用。

医学関連は 医学ノート

CGALのサンプルを実行する

CGAL 4.8 - Poisson Surface Reconstruction: User Manualを実行した。以下概要。

CGALのインストール

sudo apt-get intall libcgal-dev libcgal-demo libeigen3-dev
mkdir $HOME/cgal
cd $HOME/cgal      
tar xzf /usr/share/doc/libcgal-demo/examples.tar.gz      
tar xzf /usr/share/doc/libcgal-demo/demo.tar.gz      

ディレクトリの移動

~/cgal/examples/Surface_reconstruction_points_3

ソースコードの編集

コンパイル

aptでインストールしたパッケージ付属のライブラリでのみ有効

clang++ -I/usr/include/ -I/usr/include/eigen3/ -lCGAL -lboost_thread -lboost_system -lgmp -lmpfr poisson_reconstruction_example.cpp

g++で動くかどうかは未検証

実行

./a.out

出力ファイルの編集

kitten_poisson-20-30-0.375.offというファイルができるので、テキストエディタで頂点の座標までの行を削除してから、

faces = []
vertices = []

with open("kitten_poisson-20-30-0.375.off") as f:
    for line in f.readlines():
        line = line.split()
        if len(line) == 3:
           vertices.append([float(s) for s in line])
        if len(line) == 4:
           faces.append([int(s)+1 for s in line[1:]])

with open("kitten.obj", "w") as f:
    out = ""
    for vertex in vertices:
        out += "v " + " ".join([str(i) for i in vertex]) + "\n"
    for face in faces:
        out += "f " + " ".join([str(i) for i in face]) + "\n"
    f.write(out)

プロット

ShapeMove/src/Fairing at master · statgenetJimu/ShapeMove · GitHubを利用するなら./fairing kitten.obj

f:id:kuyata:20160418210943p:plain

ちなみに元のデータは以下のような感じ(処理後なので点は減少しているが)

f:id:kuyata:20160418212401p:plain

参考

ドロネー分割や凸包だと凹んでいる部分があるデータでうまく行かない(がメモ)