やっぱり気泡が気になります。 多少速度を犠牲にしても良しとして、根本的に対策しておきます。
再帰して交点を求めるときに、 前回の交点となった物体の情報を覚えておいて、 交点算出時に除外する方針で何とかしてみます。
あと、多角形(poly_n)の交点を求める処理を入れてましたが、、、 多角形は複数の三角形に展開して使うので、不要でした orz
まず前のバージョンの結果を確認
$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v18/objs_1_2 n=1 init_sec=5 div=2 : wh : 76009/76800(99.0%) : total 7m 50.93s : rest 4.85s : 2018/04/12 20:50:10 wh : 76469/76800(99.6%) : total 7m 49.10s : rest 2.02s : 2018/04/12 20:50:08 wh : 76800/76800(100.0%) : fin 7m 47.81s
では対策したバージョンで
$ cd .. $ cat v19.patch | ( cd rt ; patch -p1 ) $ cd rt $ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v19/objs_1_2 n=1 init_sec=5 div=2 : wh : 75908/76800(98.8%) : total 7m 42.15s : rest 5.36s : 2018/04/12 21:00:15 wh : 76373/76800(99.4%) : total 7m 40.34s : rest 2.55s : 2018/04/12 21:00:13 wh : 76800/76800(100.0%) : fin 7m 38.74s
円柱の曲面や、円柱と平面の交差するあたりで改善が顕著です。 処理時間はほぼ同等。逆に短縮されたくらいですね v^_^)