This Page

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