Skip to content

Instantly share code, notes, and snippets.

@drawcode
Forked from nimaid/fraksl.pde
Created November 26, 2018 21:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save drawcode/0094039efce7e3c423dba0379a57ea0c to your computer and use it in GitHub Desktop.
Save drawcode/0094039efce7e3c423dba0379a57ea0c to your computer and use it in GitHub Desktop.
Fraksl Processing Script
/*
A port of the Fraksl Android App by Ella Jameson
WASD to move, QE to rotate, [UP][DOWN] to zoom, P to take a picture in the sketch directory
*/
void mirror_screen()
{
loadPixels();
for(int row = 0; row < height; row++)
{
for(int col = 0; col < width / 2; col++)
{
pixels[(width - col - 1) + (width * row)] = pixels[col + (width * row)];
}
}
updatePixels();
}
PImage prev_screen;
void make_prev_screen()
{
prev_screen = get();
prev_screen.filter(INVERT);
}
int x_pos;
int y_pos;
float rotation = 0;
float zoom = .5;
int translate_delta;
float rotate_delta = TWO_PI / (pow(2, 8));
float zoom_delta = 0.01;
boolean[] current_keys = new boolean[9];
void key_list(int in_key, boolean in_pressed)
{
if(in_key == 'q')
{
current_keys[0] = in_pressed;
}
if(in_key == 'w')
{
current_keys[1] = in_pressed;
}
if(in_key == 'e')
{
current_keys[2] = in_pressed;
}
if(in_key == 'a')
{
current_keys[3] = in_pressed;
}
if(in_key == 's')
{
current_keys[4] = in_pressed;
}
if(in_key == 'd')
{
current_keys[5] = in_pressed;
}
if(in_key == UP)
{
current_keys[6] = in_pressed;
}
if(in_key == DOWN)
{
current_keys[7] = in_pressed;
}
if(in_key == 'p')
{
current_keys[8] = in_pressed;
}
}
void keyPressed()
{
if(key == CODED)
{
key_list(keyCode, true);
}
else
{
key_list(key, true);
}
}
void keyReleased()
{
if(key == CODED)
{
key_list(keyCode, false);
}
else
{
key_list(key, false);
}
}
void key_update()
{
if(current_keys[0])
{
rotation -= rotate_delta;
}
if(current_keys[1])
{
y_pos -= translate_delta;
}
if(current_keys[2])
{
rotation += rotate_delta;
}
if(current_keys[3])
{
x_pos -= translate_delta;
}
if(current_keys[4])
{
y_pos += translate_delta;
}
if(current_keys[5])
{
x_pos += translate_delta;
}
if(current_keys[6])
{
zoom += zoom_delta;
}
if(current_keys[7])
{
zoom -= zoom_delta;
}
save_frame = false;
if(current_keys[8])
{
save_frame = true;
}
}
void setup()
{
size(1920, 1080);
background(0);
frameRate(60);
make_prev_screen();
x_pos = (int)(width / 2) - (int)((width * zoom) / 4);
y_pos = (int)(height / 2);
translate_delta = (int)(height / (pow(2, 8)));
}
boolean save_frame;
void draw()
{
background(255);
key_update();
prev_screen.resize((int)(width * zoom), (int)(height * zoom));
translate(x_pos, y_pos);
rotate(rotation);
image(prev_screen, -prev_screen.width / 2, -prev_screen.height / 2);
mirror_screen();
make_prev_screen();
if(save_frame)
{
saveFrame("####.png");
delay(1000);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment