03-30-2022, 10:40 PM | #1 |
Human being with feelings
Join Date: Dec 2012
Posts: 7,294
|
Horizontal Slit Scan
This is super silly, but also a lot of weird fun.
Code:
//Horizontal Slit Scan //@param 1:slit_p 'slit x position' 0.5 0 1 0.5 0.001 //@param 2:speed 'scan speed' 4 0.1 16 4 0.01 //@param 3:dir 'direction left/right' 1, -1, 1, 0, 2 //@param 4:reset 'reset on 1' 0, 0, 1, 0, 1 reset > last_reset ? inited = 0; last_reset = reset; ! inited ? (i = 0; inited = 1; slit = slit_p * project_w; dist = speed * dir; o_x = min (slit, slit + dist); d = max (1, min (project_w, o_x + speed)); o_x = max (0, o_x); max_j = $e ^ abs (log(speed)); input = gfx_img_resize (input, project_w, project_h, 1); output = gfx_img_resize (output, project_w, project_h, 1); ); slit_p != last_slit ? (slit = slit_p * project_w; dist = speed * dir; o_x = min (slit, slit + dist); d = max (1, min (project_w, o_x + speed)); o_x = max (0, o_x); ); last_slit = slit_p; speed != last_speed ? (max_j = $e ^ abs((log(speed))); dist = speed * dir; o_x = min (slit, slit + dist); d = max (1, min (project_w, o_x + speed)); o_x = max (0, o_x);); last_speed = speed; dir != last_dir ? (dist = speed * dir; o_x = min (slit, slit + dist); d = max (1, min (project_w, o_x + speed)); o_x = max (0, o_x);); last_dir = dir; function slit_scan () (gfx_dest = input; gfx_blit (0, 0, 0, 0, project_w, project_h); gfx_dest = output; gfx_blit (input, 0, i, 0, 1, project_h, o_x, 0, d, project_h); gfx_dest = -1; gfx_blit (output);); j = 0; speed >= 1 ? (while (j < max_j) (slit_scan (); speed >= 1 ? (i += dir + project_w; i %= project_w;); j += 1; ); ); speed < 1 ? (slit_scan (); k += 1; k >= max_j ? (i += dir + project_w; i %= project_w; k = 0); );
__________________
Lorenzo's Tractor is Everywhere --- Ash's Tube --- Join the Partnership for a Drum Free Amerika Last edited by ashcat_lt; 03-31-2022 at 07:47 AM. |
Thread Tools | |
Display Modes | |
|
|