Skip to content

Instantly share code, notes, and snippets.

@jacobjoaquin
Created September 21, 2014 07:24
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 jacobjoaquin/d1c67e80f3d58fb0cb20 to your computer and use it in GitHub Desktop.
Save jacobjoaquin/d1c67e80f3d58fb0cb20 to your computer and use it in GitHub Desktop.
Built with Processing.
ArrayList<Float> params;
void setup() {
size(1200, 1200);
params = new ArrayList<Float>();
params.add(200.0);
params.add(0.00001);
params.add(100.0);
params.add(50.0);
params.add(20.0);
params.add(500.0);
}
int tileSize = 200;
void draw() {
noLoop();
background(180);
float bar = 10;
for (int y = 0; y < height / tileSize; y++) {
for (int x = 0; x < width / tileSize; x++) {
pushMatrix();
translate(x * tileSize + tileSize / 2, y * tileSize + tileSize / 2);
scale(0.25);
params.set(3, bar);
bar += 10;
genSpiro(params);
popMatrix();
}
}
}
void genSpiro(ArrayList<Float> list) {
ArrayList<Float> phasors = new ArrayList<Float>();
int size = list.size() / 2;
for (int i = 0; i < size; i++) {
phasors.add(0.0);
}
noFill();
strokeWeight(0.1);
beginShape();
Float phasorPrime = phasors.get(0);
while (phasorPrime <= 1.0) {
ArrayList<PVector> pvs = new ArrayList<PVector>();
for (int i = 0; i < size; i++) {
Float phasor = phasors.get(i);
PVector pv = PVector.fromAngle(phasor * TWO_PI);
Float L = list.get(i * 2);
pv.mult(L);
pvs.add(pv);
}
PVector pvt = pvs.get(0);
PVector pve = pvt.get();
for (int i = 1; i < size; i++) {
pve.add(pvs.get(i));
}
vertex(pve.x, pve.y);
for (int i = 0; i < size; i++) {
if (i == 0) {
phasorPrime += list.get(1);
phasors.set(i, phasorPrime);
}
else {
Float phasor = phasors.get(i);
phasor += list.get(1) * list.get(i * 2 + 1);
phasors.set(i, phasor);
}
}
}
endShape();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment