Script
import processing.opengl.*;
import processing.pdf.*;
boolean dosave=false;
//PDFint ellipseXloc;
int ellipseYloc;
float ellipseX;
float ellipseY;void setup(){
size(500,500,OPENGL);
}void draw(){
////////////////////////////////////////////PDF Startif(dosave) {
PGraphicsPDF pdf=(PGraphicsPDF)beginRaw(PDF, “####.pdf”);
// set default Illustrator stroke styles and paint background rect.
pdf.strokeJoin(MITER);
pdf.strokeCap
(SQUARE);
pdf.fill(0);
pdf.noStroke();
pdf.rect(0,0, width,height);
}
background(0);
smooth();
//noFill(); //object array is now determined by window size for (int j=0;j<height;j=j+30){
for (int i=0;i<width;i=i+30){
pushMatrix();
float cellX=i;
float cellY=j;
float cellZ=constrain(i/4+mouseX/5,0,300);
float mouseDist=dist(cellX,cellY,mouseX,mouseY); translate(cellX,cellY); if (mouseDist<cellX/2){
rotateY(radians(cellY)+120/mouseDist/2);
rotateX(radians(cellZ/3+120/mouseDist/2));
}
else{
rotateY(radians(cellZ));
rotateX(radians(cellY/3));
} scale(.75);
if (cellX<200&&cellX>100&&cellY>100&&cellY<150){
rotateZ(TWO_PI/j);
stroke(150);
strokeWeight(1);
scale(constrain(j/3,1,2));
}
else{
stroke(150);
strokeWeight(.25);
scale(constrain(i*3,2,1));
}
drawCell();
popMatrix();
}
}
/////////////////PDF Close
if(dosave) {
endRaw();
dosave=false;
}
}
void drawCell(){
ellipseX=(50);
ellipseY=50;
ellipseXloc=0;
ellipseYloc=0;
float ellipseQuad1x=ellipseXloc-ellipseX/2;
float ellipseQuad1Y=ellipseYloc;
float ellipseQuad2x=ellipseXloc-ellipseX/2;
float ellipseQuad2Y=ellipseYloc;
int aLineX=ellipseXloc;
int aLineY=mouseY/4;
int aLineZ=50;
int bLineX=ellipseXloc;
int bLineY=mouseY/4;
int bLineZ=-50;
if (aLineY>50){
bLineX=-bLineY;
} pushMatrix();
fill(225,225,255,100);
ellipse (ellipseXloc,ellipseYloc,ellipseX,ellipseY);
popMatrix(); pushMatrix();
fill(150,150,150,100);
//stroke(0);
strokeWeight(.5); translate(mouseX,mouseY);
ellipse (ellipseYloc*2,ellipseXloc*2,ellipseY,ellipseX);
line(ellipseQuad1x,ellipseQuad1Y,0,bLineX,bLineY,bLineZ);
line(ellipseQuad2x,ellipseQuad2Y,0,bLineX,bLineY,bLineZ);
line (ellipseQuad1x,ellipseQuad1Y,0,aLineX,aLineY,aLineZ);
line(ellipseQuad2x,ellipseQuad2Y,0,aLineX-mouseX/10,aLineY,aLineZ); translate(mouseY*2,mouseX*2);
ellipse (ellipseYloc*2,ellipseXloc*2,ellipseY,ellipseX);
line (ellipseQuad1x,ellipseQuad1Y,0,aLineX,aLineY,aLineZ);
line(ellipseQuad2x,ellipseQuad2Y,0,aLineX-mouseX/10,aLineY,aLineZ);
line(ellipseQuad1x,ellipseQuad1Y,0,bLineX,bLineY,bLineZ);
line(ellipseQuad2x,ellipseQuad2Y,0,bLineX,bLineY,bLineZ);
popMatrix(); pushMatrix();
fill(25,0,50,100);
ellipse (ellipseQuad1x,ellipseQuad1Y,ellipseQuad2x,ellipseQuad2Y);
popMatrix(); pushMatrix();
fill(25,75,150,100);
ellipse (ellipseQuad1x,ellipseY,ellipseQuad2x,ellipseX);
popMatrix();
pushMatrix();
fill(25,75,150,200);
ellipse (mouseX,ellipseY,mouseY,ellipseX);
popMatrix(); //line (ellipseQuad1x,ellipseQuad1Y,0,aLineX,aLineY,aLineZ);
//line(ellipseQuad2x,ellipseQuad2Y,0,aLineX-mouseX/10,aLineY,aLineZ);
//line(ellipseQuad1x,ellipseQuad1Y,0,bLineX,bLineY,bLineZ);
//line(ellipseQuad2x,ellipseQuad2Y,0,bLineX,bLineY,bLineZ);
}
void keyPressed() {
if(key==’s’) dosave=true;
background(255);
}
