Some fun with polygons!
/*
Project: Polygons
Author: GLV
Date: 2024-06-17
Version: 1.0.0
*/
int choice, seed;
int id, idlast, sb, num, mxvs;
int counter;
PVector[] v;
boolean warning = true;
void settings()
{
size(400, 400, P2D);
}
void setup()
{
background(0);
strokeWeight(2);
noLoop();
}
void draw()
{
background(0);
translate(width/2, height/2);
int vs = 10; // 1 to max vertices
int sp = 12; // speed
// Some bit manipulation just for the challenge!
id = ((counter+vs*sp)/sp)%(2*vs)-vs;
sb = (id>>23)&1;
num = (id^-sb)+sb+1;
stats(); // Development and debug
v = new PVector[num];
int r = 150;
// Polygons
if(choice == 0)
{
stroke(255, 100, 0);
for(int k = 0; k < num; k++)
{
float angle = k*(TAU/num) - TAU/4;
float x = r*cos(angle);
float y = r*sin(angle);
v[k] = new PVector(x, y);
}
}
// Random points
else if (choice == 1)
{
stroke(0, 255, 0);
randomSeed(seed);
for(int k = 0; k < num; k++)
{
float x = random(-width/2+10, width/2-10);
float y = random(-height/2+10, height/2-10);
v[k] = new PVector(x, y);
}
}
// Random offsets on polygons
else if (choice == 2)
{
stroke(255, 255, 0);
for(int k = 0; k < num; k++)
{
r = (int) random(130, 170);
float angle = k*(TAU/num) - TAU/4;
float x = r*cos(angle);
float y = r*sin(angle);
v[k] = new PVector(x, y);
}
}
for(int i = 0; i < num-1; i++)
{
for(int j = i+1; j < num; j++)
{
//println(i,j);
line(v[i].x, v[i].y, v[j].x, v[j].y);
}
}
counter++;
if (warning)
{
background(0);
rectMode(CENTER);
fill(0);
noStroke();
rect(0, 0, width, height);
textAlign(CENTER, CENTER);
textSize(48);
fill(255, 0, 0);
text("WARNING", 0, -height/3);
fill(255, 255, 0);
textSize(32);
text("This animation contains \n fast moving images.", 0, -50);
fill(255, 255, 0);
textSize(32);
text("Press 5 to continue. \n Press any other key to exit.", 0, 60);
fill(0, 255, 255);
textSize(24);
text("Press mouse to change animation!", 0, 140);
}
}
void stats()
{
if(id != idlast)
{
println(str(' ')+num, id); // end line and line feed.
}
print(sb);
idlast = id;
}
void keyPressed()
{
if (key == '5')
{
warning = false;
choice = 0;
counter = 0;
loop();
}
else
exit();
}
void mousePressed()
{
choice++;
choice = choice%3;
counter = 0;
seed = frameCount;
println(choice);
}
:)