diff -urN rt_v9/cg.py rt_v10/cg.py --- rt_v9/cg.py 2018-03-23 11:46:23.000000000 +0900 +++ rt_v10/cg.py 2018-03-24 12:41:14.000000000 +0900 @@ -40,6 +40,21 @@ def d_setup(d): # return lst [d] + kind = d.get('kind') + + if kind == 'cube': + def cube_f( (l, deg) ): + d_ = d.copy() + d_['kind'] = 'square' + d_['l2m'] = [ ax.slide_z(1), ax.rot(l, deg) ] + d_.get( 'l2m', [] ) + return d_setup( d_ ) + rots = [ + (line.x1, 0), (line.x1, 90), (line.x1, 180), (line.x1, -90), + (line.y1, 90), (line.y1, -90) + ] + return sum( map( cube_f, rots ), [] ) + ### + if_not_set_opt( d, 'l2m', [] ) if_not_set_opt( d, 'm2g', [] ) if_not_set_opt( d, 'l2g', d.get('l2m') + d.get('m2g') ) @@ -65,7 +80,7 @@ 'maps': maps, 'm2g': [ ax.zoom_all(50) ], },{ - 'kind': 'ball', + 'kind': 'cube', 'rtd': { 'base':0.1, 'diff': 0, 'reflect': 0.5, 'reflact': 0.5, 'density': 2 }, 'def_col': [128,0,0], 'l2m': [ ax.zoom_all(20.0/50) ], diff -urN rt_v9/wf.py rt_v10/wf.py --- rt_v9/wf.py 2018-03-18 10:29:07.000000000 +0900 +++ rt_v10/wf.py 2018-03-24 12:35:50.000000000 +0900 @@ -6,8 +6,8 @@ import lstx def wf_ps_idxs(d): - ps_to_idxs = lambda ps: map( lambda i: ( i, (i+1)%n ), range( len(ps) ) ) - rv_ps = lambda ps: ( ps, ps_to_idxs(ps) ) + len_to_idxs = lambda n, add=0: map( lambda i: ( i, (i+1)%n ), range(add, add+n) ) + rv_ps = lambda ps: ( ps, len_to_idxs( len(ps) ) ) kind = d.get('kind') @@ -34,17 +34,29 @@ (ps, idxs) = c3[1] n = len(ps) ps = map( lambda p: ax.rot_x(90).tr('l2g', p), ps ) - idxs = map( lambda idx: map( lambda id: id + n, idx ), idxs ) + idxs = len_to_idxs(n, n) c3[1] = (ps, idxs) (ps, idxs) = c3[2] - n *= 2 ps = map( lambda p: ax.rot_y(90).tr('l2g', p), ps ) - idxs = map( lambda idx: map( lambda id: id + n, idx ), idxs ) + idxs = len_to_idxs(n, 2*n) c3[2] = (ps, idxs) return map( lambda xs_lst: sum( xs_lst, [] ), zip(*c3) ) + z_pn = lambda ps: map( lambda (x,y,z): [x,y,1], ps ) + map( lambda (x,y,z): [x,y,-1], ps ) + + def mk_prism(ps): + n = len(ps) + ps = z_pn(ps) + idxs = len_to_idxs(n) + len_to_idxs(n, n) + map( lambda i: (i,i+n), range(n) ) + return (ps, idxs) + + if kind == 'cube': + d = { 'kind': 'square' } + (ps, _) = wf_ps_idxs(d) + return mk_prism(ps) + return ([],[]) def nv_clip(nv, pa, pb):