lvidx69 : segment ring with 4 box cuts ========================================= * forced to use raw to get raytrace to work * coincidence artifact at one box cut corner * fixing coincidence involving box is difficult as not z-nudgeable : need CSG_ZBOX ? * ~/opticks_refs/lvidx_69_ring_box_cuts_artifact.png :: op --gltf 4 op --gltf 44 2017-07-07 20:54:11.485 INFO [3968900] [GScene::importMeshes@316] GScene::importMeshes DONE num_meshes 249 10.0198 SstTopCirRibBase0xc264f78 lvidx 69 nsp 242 intersection difference cylinder slab box3 nds[ 16] 4465 4466 4467 4468 4469 4470 4471 4472 6125 6126 ... 10.0198 SstTopCirRibBase0xc264f78 lvidx 69 nsp 242 amn ( 848.528 0.000 -115.945) bmn ( 854.653 10.020 -115.945) dmn ( -6.125 -10.020 0.000) amx ( 1220.000 862.670 115.945) bmx ( 1218.680 854.688 115.945) dmx ( 1.320 7.982 0.000) :: 080 # generated by tboolean.py : 20170708-1036 81 # opticks-;opticks-tbool 69 82 # opticks-;opticks-tbool-vi 69 83 84 85 a = CSG("cylinder", param = [0.000,0.000,0.000,1220.000],param1 = [-115.945,115.945,0.000,0.000]) 86 b = CSG("cylinder", param = [0.000,0.000,0.000,1200.000],param1 = [-117.104,117.104,0.000,0.000]) 87 ab = CSG("difference", left=a, right=b) 88 89 c = CSG("slab", param = [0.000,1.000,0.000,0.000],param1 = [0.000,1221.000,0.000,0.000]) 90 abc = CSG("intersection", left=ab, right=c) 91 92 d = CSG("slab", param = [0.707,-0.707,0.000,0.000],param1 = [0.000,1221.000,0.000,0.000]) 93 abcd = CSG("intersection", left=abc, right=d) 94 95 e = CSG("box3", param = [2460.000,20.000,231.890,0.000],param1 = [0.000,0.000,0.000,0.000]) 96 e.transform = [[1.000,0.000,0.000,0.000],[0.000,1.000,0.000,0.000],[0.000,0.000,1.000,0.000],[0.000,0.000,0.000,1.000]] 97 abcde = CSG("difference", left=abcd, right=e) 98 99 f = CSG("box3", param = [2460.000,100.000,20.000,0.000],param1 = [0.000,0.000,0.000,0.000]) 100 f.transform = [[1.000,0.000,0.000,0.000],[0.000,1.000,0.000,0.000],[0.000,0.000,1.000,0.000],[0.000,0.000,-105.945,1.000]] 101 abcdef = CSG("difference", left=abcde, right=f) /// this one too /// (-10, 10 ) -> (-115.945, -95.945 ) /// ^^^^^^^^^ /// cylinder-z edge coincidence 102 103 g = CSG("box3", param = [2460.000,20.000,231.890,0.000],param1 = [0.000,0.000,0.000,0.000]) 104 g.transform = [[0.707,-0.707,0.000,0.000],[0.707,0.707,0.000,0.000],[0.000,0.000,1.000,0.000],[0.000,0.000,0.000,1.000]] 105 abcdefg = CSG("difference", left=abcdef, right=g) 106 107 h = CSG("box3", param = [2460.000,100.000,20.000,0.000],param1 = [0.000,0.000,0.000,0.000]) 108 h.transform = [[0.707,-0.707,0.000,0.000],[0.707,0.707,0.000,0.000],[0.000,0.000,1.000,0.000],[0.000,0.000,-105.945,1.000]] 109 abcdefgh = CSG("difference", left=abcdefg, right=h) /// (-10, 10 ) -> (-115.945, -95.945 ) /// ^^^^^^^^^ /// cylinder-z edge coincidence 110 111 112 113 raw = abcdefgh :: delta:cu blyth$ opticks-;opticks-tbool- 69 opticks-tbool- : sourcing /usr/local/opticks/opticksdata/export/DayaBay_VGDX_20140414-1300/extras/69/tbool69.bash args: [2017-07-08 11:32:20,894] p8952 {/Users/blyth/opticks/analytic/csg.py:822} INFO - raw name:difference di(di(di(di(in(in(di(cy,cy),sl),sl),bo),bo),bo),bo) height:7 totnodes:255 di abcdefgh di abcdefg bo h di abcdef bo g di abcde bo f in abcd bo e in abc sl d di ab sl c cy a cy b [2017-07-08 11:32:20,895] p8952 {/Users/blyth/opticks/analytic/csg.py:822} INFO - optimized name:intersection_prim_balanced in(in(in(cy,!cy),in(sl,sl)),in(in(!bo,!bo),in(!bo,!bo))) height:3 totnodes:15 in abcdefgh in abcd in efgh in ab in cd in ef in gh cy a !cy b sl c sl d !bo e !bo f !bo g !bo h [2017-07-08 11:32:20,895] p8952 {/Users/blyth/opticks/analytic/csg.py:417} INFO - CSG.Serialize : writing 2 trees to directory /tmp/blyth/opticks/tbool/69 analytic=1_csgpath=/tmp/blyth/opticks/tbool/69_name=69_mode=PyCsgInBox