diff -urN wf-/data.c wf/data.c --- wf-/data.c 2015-12-20 00:00:00.000000000 +0900 +++ wf/data.c 2015-12-21 00:00:00.000000000 +0900 @@ -266,25 +266,25 @@ static void op_data_slide_way(struct way *slide, data_t *data, prm_t *prm) { - affin_t af; - struct way way = *slide; + struct way way = *slide; + d3_t p; + data_t op = { type_slide, &p }; way_get(&way, prm->sec); - affin_slide(&af, &way.ret_p); - affin_compo(&prm->af, &prm->af, &af); - data_draw(data, prm); + p = way.ret_p; + op_data_draw(&op, data, prm); } static void op_data_rot_way(struct rot_way *rw, data_t *data, prm_t *prm) { - affin_t af; struct way way = rw->deg_way; + struct rot rot = { .l = rw->l }; + data_t op = { type_rot, &rot }; way_get(&way, prm->sec); - affin_rot(&af, &rw->l, way.ret_v); - affin_compo(&prm->af, &prm->af, &af); - data_draw(data, prm); + rot.deg = way.ret_v; + op_data_draw(&op, data, prm); } static void diff -urN wf-/way.c wf/way.c --- wf-/way.c 2015-12-19 00:00:00.000000000 +0900 +++ wf/way.c 2015-12-21 00:00:00.000000000 +0900 @@ -52,7 +52,7 @@ if(way->dg == 1){ if(way->vs){ - way->ret_v = linear(t, 0, ts[idx], way->vs[idx], way->vs[nxt]); + way->ret_v = linear(t, 0, 1, way->vs[idx], way->vs[nxt]); } if(way->ps){ line_t l; diff -urN wf-/wf_ex.c wf/wf_ex.c --- wf-/wf_ex.c 2015-12-20 00:00:00.000000000 +0900 +++ wf/wf_ex.c 2015-12-21 00:00:00.000000000 +0900 @@ -221,12 +221,36 @@ }}, .data = &(data_t){ type_cube } }}; + data_t *ferris_wheel = &(data_t){ type_op_data_set, &(struct op_data_set){ + .op = &(data_t){ type_arr, (data_t[]){ + { type_slide, &(d3_t){20,20,-10} }, + { type_copy_timeshift, &(struct copy_timeshift){ + .n=12, .init_sec=0, .step_sec=10.0/12, .init={0,0,0}, .step={0,0,0} } }, + { type_rot_way, &(struct rot_way){ + .l=LINE_Y, .deg_way={ .n=2, .vs=(double[]){0,-360}, .ts=(double[]){10,0}, .ps=NULL, .dg=1 } } }, + { type_end } }}, + .data = &(data_t){ type_arr, (data_t[]){ + { type_op_data_set, &(struct op_data_set){ + .op = &(data_t){ type_zoom_and_slide, (d3_t[]){{3,1,1},{10-3,0,0}} }, + .data = &(data_t){ type_square } }}, + { type_op_data_set, &(struct op_data_set){ + .op = &(data_t){ type_arr, (data_t[]){ + { type_slide, &(d3_t){10,0,0} }, + { type_rot_way, &(struct rot_way){ + .l=LINE_Y, .deg_way={ .n=2, .vs=(double[]){0,360}, .ts=(double[]){10,0}, .ps=NULL, .dg=1 } }}, + { type_slide, &(d3_t){0,0,-1} }, + { type_end } }}, + .data = &(data_t){ type_cube } }}, + { type_end } + }} + }}; + data.type = type_arr; data.p = (data_t[]){ *axyz, *cross, *cube, *cube3, - *cup, + *cup, *ferris_wheel, { type_end } }; }