Skip to content

Instantly share code, notes, and snippets.

@marcedwards
Last active November 22, 2020 22:20
Show Gist options
  • Save marcedwards/e66c86c9214da7bbe0652e683903c12a to your computer and use it in GitHub Desktop.
Save marcedwards/e66c86c9214da7bbe0652e683903c12a to your computer and use it in GitHub Desktop.
A loading spinner for Processing 3.3.7
// A loading spinner.
// By @marcedwards from @bjango.
void setup() {
size(300, 300, P2D);
frameRate(30);
smooth(8);
noFill();
stroke(255);
strokeWeight(6);
}
void draw() {
background(29);
drawArc(8);
}
void drawArc(int endoffset) {
float a = easeInOutN(timeCycle(40, 0), 4);
float b = easeInOutN(timeCycle(40, endoffset), 5);
float r = timeCycle(40, 0);
if (a > b) {
b++;
}
pushMatrix();
translate(width / 2, height / 2);
rotate(TAU * 0.75);
arc(0, 0, 100, 100,
a * TAU * 0.8 + r * TAU * 0.2 - 0.3,
b * TAU * 0.8 + r * TAU * 0.2 + 0.3
);
popMatrix();
}
float easeInOutN(float t, float power) {
return t<0.5 ? 0.5*pow(2*t, power) : 1-0.5*pow(2*(1-t), power);
}
float timeCycle(int totalframes, int offset) {
return float((frameCount + offset) % totalframes) / float(totalframes);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment