diff -urN rt_v11/cg.py rt_v12/cg.py --- rt_v11/cg.py 2018-03-25 11:58:52.000000000 +0900 +++ rt_v12/cg.py 2018-03-28 22:09:24.000000000 +0900 @@ -192,7 +192,7 @@ def poly_n_pyramid_side_f(i): d_ = d.copy() d_['kind'] = 'triangle' - d_['l2m'] = [ ax.zoom([b,h2,1]), ax.rot_x(deg2), ax.slide_y(-h), ax.rot_z(deg*i) ] + d_.get( 'l2m', [] ) + d_['l2m'] = [ ax.zoom([b,h2,1]), ax.rot_x(deg2), ax.slide_y(-h), ax.rot_z(deg*i) ] + d_.get( 'l2m', [] ) return d_setup( d_ ) return sum( map( poly_n_pyramid_side_f, range(n) ), [] ) diff -urN rt_v11/dat.py rt_v12/dat.py --- rt_v11/dat.py 2018-03-27 09:44:30.000000000 +0900 +++ rt_v12/dat.py 2018-03-28 22:31:01.000000000 +0900 @@ -1,5 +1,6 @@ #!/usr/bin/env python +import ut import v import line import ax @@ -8,15 +9,72 @@ import lstx copen = 'copen-090419.jpg' -beat = 'beat.jpg' + +maps_copen = [ { 'fn': copen, 't2m': [ ax.zoom_all(2) ] } ] + +copen = [ { + 'kind': 'square', + 'l2m': [], + 'maps': maps_copen, + 'm2g': [ ax.zoom_all(50) ], +},{ + 'kind': 'ball', + 'def_col': [128,0,0], + 'l2m': [ ax.zoom_all(20.0/50) ], + 'maps': maps_copen, + 'm2g': [ ax.zoom_all(50) ], +} ] maps = [ { 'fn': 'IMG_3999_3.mov', 'fn_r': 'IMG_3999_4.mov', 't2m': [ ax.zoom_all(3) ] }, ] +ball = [ { + 'kind': 'square', + 'rtd': { 'base': 0.1, 'diff': 1.0, 'reflect': 0.9 }, + 'l2m': [], + 'maps': maps, + 'm2g': [ ax.zoom_all(50) ], +},{ + 'kind': 'ball', + '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) ], + 'm2g': [ ax.zoom_all(50) ], +} ] + +cube = [ { + 'kind': 'square', + 'rtd': { 'base': 0.1, 'diff': 1.0, 'reflect': 0.9 }, + 'l2m': [], + 'maps': maps, + 'm2g': [ ax.zoom_all(50) ], +},{ + '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) ], + 'm2g': [ ax.zoom_all(50) ], +} ] + +poly_n_pyramid = [ { + 'kind': 'square', + 'rtd': { 'base': 0.1, 'diff': 1.0, 'reflect': 0.9 }, + 'l2m': [], + 'maps': maps, + 'm2g': [ ax.zoom_all(50) ], +},{ + 'kind': 'poly_n_pyramid', + 'n': 5, + 'rtd': { 'base':0.1, 'diff': 0, 'reflect': 0.5, 'reflact': 0.5, 'density': 2 }, + 'def_col': [128,0,0], + 'l2m': [ ax.zoom_z(2), ax.slide_z(-1), ax.zoom_all(20.0/50) ], + 'm2g': [ ax.zoom_all(50) ], +} ] + rtd = { 'base':0.1, 'diff': 0, 'reflect': 0.5, 'reflact': 0.5, 'density': 2 } -data = [ { +objs = [ { 'kind': 'square', 'rtd': { 'base': 0.1, 'diff': 1.0, 'reflect': 0.9 }, 'l2m': [], @@ -92,6 +150,16 @@ 'l2m': [ ax.zoom_z(2), ax.slide_z(-1), ax.zoom_all(5), ax.slide([30,30,0]) ], } ] +data_dic = { + 'copen': copen, + 'ball': ball, + 'cube': cube, + 'poly_n_pyramid': poly_n_pyramid, + 'objs': objs, +} + +data = data_dic.get( ut.arg_s('data_name'), [] ) + lights = [ { 'p': v.op1( '*', [1,-1,-1], 30 ), 'e': 2.5 }, { 'p': v.op1( '*', [-1,1,1], 30 ), 'e': 2.5 }, diff -urN rt_v11/img.py rt_v12/img.py --- rt_v11/img.py 2018-03-22 11:28:39.000000000 +0900 +++ rt_v12/img.py 2018-03-28 15:03:44.000000000 +0900 @@ -28,11 +28,21 @@ def read_video(fn): vc = cv2.VideoCapture(fn) - ks = [ - cv2.CAP_PROP_FRAME_WIDTH, - cv2.CAP_PROP_FRAME_HEIGHT, - cv2.CAP_PROP_FPS, - ] + + ks = [ 3, 4, 5 ] + if hasattr(cv2, 'CAP_PROP_FRAME_WIDTH'): + ks = [ + cv2.CAP_PROP_FRAME_WIDTH, + cv2.CAP_PROP_FRAME_HEIGHT, + cv2.CAP_PROP_FPS, + ] + elif hasattr(cv2.cv, 'CV_CAP_PROP_FRAME_WIDTH'): + ks = [ + cv2.cv.CV_CAP_PROP_FRAME_WIDTH, + cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, + cv2.cv.CV_CAP_PROP_FPS, + ] + (w, h, fps) = map( vc.get, ks ) (w, h) = map( int, (w, h) ) diff -urN rt_v11/vecs.py rt_v12/vecs.py --- rt_v11/vecs.py 2018-03-16 20:38:43.000000000 +0900 +++ rt_v12/vecs.py 2018-03-28 22:25:34.000000000 +0900 @@ -12,10 +12,15 @@ e.typ = 'vecs' e.v3 = v3 l2g = lambda v_: v.lst_add( map( lambda (a, e): v.op1('*', a, e), zip(v3, v_) ) ) - g2l = lambda v_: map( lambda a: v.dot_product_len(v_, a), v3 ) + g2l = lambda v: e.rev().tr('l2g', v) e.tr = lambda d, v: { 'l2g': l2g, 'g2l': g2l }.get(d, l2g)(v) - e.rev = lambda : new( mt.v3_rev(v3) ) + e.rev_vs = None + def rev(): + if not e.rev_vs: + e.rev_vs = new( mt.v3_rev(v3) ) + return e.rev_vs + e.rev = rev e.zoom = lambda zm3: new( map( lambda (v_, zm): v.op1('*', v_, zm), zip(v3, zm3) ) ) e.zoom_all = lambda zm: e.zoom( [zm,zm,zm] )