徐々にC言語実装で侵略

rt.pyの主要部分のコードを徐々にrt.cに移して試してますが... 1つの壁は「get_col()の再帰」です。

このあたりでpython側とC側を行ったり来たりしていては、 結局もたもたして速度が上がりませぬ。

という事でget_col()ごとゴッソリとrt.cへ持って行ってみました。

v30.patch

$ cat v30.patch | ( cd rt ; patch -p1 )

$ cd rt

$ make clean
$ make

では、いつもの速度確認。

$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v30/objs_1_2_sc n=1 init_sec=5 div=2
  :
wh : 76800/76800(100.0%) : fin 38.39s

  以前の
  v29  wh : 76800/76800(100.0%) : fin 1m 44.72s
  v28  wh : 76800/76800(100.0%) : fin 1m 18.06s
  v27  wh : 76800/76800(100.0%) : fin 1m 8.39s
  v26  wh : 76800/76800(100.0%) : fin 1m 6.02s

大幅に短縮! よしよし v^_^)

そして起動しっぱなしのサーバを落とすには、

$ ps ax | grep ' boot$' | cut -d ' ' -f1 | xargs kill

そのうち、もうちょっと簡単な方法を用意せねば...

例のデータでも試してみます。 まずは荒い解像度で。

$ ./cg.py eyep=[100,0,0],100,5 sec=10 data_name=ball_world name=out_v30/bw_tst div=32
  :
frm : 300/300(100.0%) : fin 1m 39.28s

解像度フルでの予想時間は

( (60+39.28) *32*32 ) /60/60 = 28.23 時間

div=2の設定ならば

( (60+39.28) *16*16 ) /60/60 = 7.05 時間

ここらで手を打ってみましょう。

$ ./cg.py eyep=[100,0,0],100,5 sec=10 data_name=ball_world name=out_v30/bw_2 div=2
  :
wh : 76800/76800(100.0%) : fin 1m 5.33s
frm : 300/300(100.0%) : fin 5h 22m 17.99s

予想より若干短く5時間半弱。

視点移動の中心をちょっとずらしたので、5秒あたりで真上からのアングルになった瞬間、 カメラの姿勢がロール方向に180度回転。 一瞬で球と立方体の位置関係が入れ替わって見えてます。