Script
import processing.opengl.*;
import processing.pdf.*;
boolean dosave=false;int cols=60;
int rows=60;
int ellipseXloc;
int ellipseYloc;
float ellipseX;
float ellipseY;
float ellipseQuad1x=ellipseXloc-ellipseX/2;
float ellipseQuad1Y=ellipseYloc;
float ellipseQuad2x=ellipseXloc-ellipseX/2;
float ellipseQuad2Y=ellipseYloc;
int aLineX=ellipseXloc;
float aLineY=mouseY/4;
int aLineZ=50;
int bLineX=ellipseXloc;
int bLineY=mouseY/4;
int bLineZ=-50;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<cols;j++){
for (int i=0;i<rows;i++){
pushMatrix();
float cellX=i;
float cellY=j;
float cellZ=constrain(i/4+mouseX/5,0,300);
float mouseDist=dist(cellX*5,cellY*5,mouseX/4,mouseY/4);
//translate(cellX*cols,cellY*rows,0);if (mouseX<width){
rotateY(radians(mouseDist/4));
rotateX(radians(mouseDist/4));
//translate(-30,-100)
}
else{
rotateY(radians(cellZ));
rotateX(radians(cellY/3));
}scale(.25);
drawCellA(i,j);
drawCellB(i,j);
drawCellC(i,j);
drawCellD(i,j);
drawCellE(i,j);
drawCellF(i,j);
popMatrix();}
}
/////////////////PDF Close
if(dosave) {
endRaw();
dosave=false;
}
}void drawCellA(int i,int j){//////////////////////////////////////////////drawCellA
ellipseX=70;
ellipseY=70;
ellipseXloc=20;
ellipseYloc=20;
noStroke();pushMatrix();
translate(cols*i,-rows*j);
fill(225*j,225*j,255*j,40);
ellipse (ellipseXloc,ellipseYloc,ellipseX,ellipseY);
popMatrix();
}void drawCellB(int i,int j){//////////////////////////////////////////////drawCellB
pushMatrix();
ellipseX=70;
ellipseY=70;
ellipseXloc=20;
ellipseYloc=20;
fill(mouseX*i,mouseX*i,200*i,20*i);
//stroke(0*j);
strokeWeight(.5);translate(100+cols*i,-250);
ellipse (ellipseYloc*2,ellipseXloc*2,ellipseY,ellipseX);
popMatrix();
}void drawCellC(int i, int j){//////////////////////////////////////////////drawCellC
pushMatrix();
fill(mouseX*i,mouseX*i,mouseX*i+200,20*i);
//stroke(0*j);
strokeWeight(.5);translate(20+cols*i,-300+rows*j);
ellipse (ellipseYloc*2,ellipseXloc*2,ellipseY,ellipseX);popMatrix();
}void drawCellD(int i,int j){//////////////////////////////////////////////drawCellD
pushMatrix();
ellipseX=70;
ellipseY=70;
ellipseXloc=20;
ellipseYloc=20;
fill(mouseX*i,mouseX*i,200+mouseX*i,20*i);
//stroke(0*j);
strokeWeight(.5);translate(40+cols*i,40+rows*j);
ellipse (ellipseYloc*2,ellipseXloc*2,ellipseY,ellipseX);popMatrix();
}void drawCellE(int i,int j){//////////////////////////////////////////////drawCellE
ellipseX=70;
ellipseY=70;
ellipseXloc=20;
ellipseYloc=20;
noStroke();pushMatrix();
translate(15+cols*i,15+rows*j);
fill(225*j,225*j,255*j,40);
ellipse (ellipseXloc,ellipseYloc,ellipseX,ellipseY);
popMatrix();
}void drawCellF(int i, int j){//////////////////////////////////////////////drawCellF
ellipseX=70;
ellipseY=70;
ellipseXloc=20;
ellipseYloc=20;
noStroke();pushMatrix();
translate(cols*i,rows*j);
fill(225*j,225*j,255*j,40);
ellipse (ellipseXloc,ellipseYloc,ellipseX,ellipseY);
popMatrix();
}void keyPressed() {//////////////////////////////////////////////savepdf
if(key==’s’) dosave=true;
background(255);
}
Research
project-1-research-poster2.pdf

Porcupinefish:
Ø Live in community systems
Ø Porcupinefish have spines over their bodies, which are actually modified scales, which lay flat against its body most of the time unless it feels threatened.
Ø The spines of the fish have roots, either two rooted or three routed.
Ø The roots generally touch each other under the skin to provided a layer of armor under the skin.
Ø The fish swim by making a wave like motion with their dorsal fins.
Ø Swimming power is compromised by the development of spines.
Ø They have fused front teeth, rather than separated teeth typical of other puffers.
Ø Porcupine Puffers may grow to lengths of up to 18 inches.
Ø Because the porcupine fish lacks pleural ribs and a pelvic girdle, expansion is not as strictly inhibited as in most puffer fish.
Ø The vertebral column is also highly flexible. It bends in an arc towards the dorsal side of the fish, allowing the fish to attain its characteristic spherical shape upon inflation
Ø The stomach, which has lost its digestive function, plays a key role in the inflation process.
Ø In addition to the elastic stomach, generous peritoneal space and skeletal structure, porcupinefish skin is also specialized for inflation. The skin of the fish is highly elastic because of microfolds in the epidermis and collagen fibers of the dermis. These allow the fish to extend through 40% of its initial length before it begins to stiffen.
Ø The porcupinefish is a shy creature and will retreat if approached by divers. They secrete a toxic skin substance so are usually considered poisonous, although they have been known to be eaten in Hawaii and
Tahiti. In the orient the dried, inflated bodies are sold as tourist novelties. And on some Pacific islands, the dried skins were used in the past as war helmets. Porcupinefish are also collected for private and public show aquariums. They are not normally caught for human consumption.Ø To try and protect themselves from the larger predators such as sharks, dolphins, and tuna, the porcupine fish will school together to give the appearance of being one large fish.
Ø As soon as a fish strays form this group it is devoured.
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);
}
Research
As a part of the diodontidae family, porcupinefish is a creature that has the amazing ability to increase its size as a defense against predators. The word diodontidae means “two teeth”, the porcupinefish is classified as such because of its two teeth that are fused into their upper and lower jaws. Their upper jaw is referred to as a crushing plate, which assists in the crushing of hard bodied prey, such as molluscs and sea urchins. The porcupinefish inflates by swallowing water. It does this when it senses danger, making it harder for some predators to attack, due to their size. The fish has many spines on its body, around its eyes, and around its mouth that stick up when the fish expands. This is yet another defense mechanism used to defend against those predators which are large enough to ingest them. These spines are held in by are series of roots, commonly either two roots or three. Also in some of the fish the roots are known to contain tetrodotoxin a chemical found in the skin, spines and intestines that will poison their. These fish normally have a light tan to brown coloring, while blacks, greens, grays, and yellows are not uncommon. The spines on the fish have a thin layer of skin over them which also carry the coloring pattern. The underside of the fish is generally white. These colors allow them to be camouflaged with their environment. The porcupinefish live on the bottom of the ocean generally around rocky reef and coral. This means that the fish are found in and round the waters of Central and South America, the southern coast of the United States (generally around Florida on both the
Gulf of Mexico
Coast and the Atlantic Ocean coast, and around the coast of Texas), the Mediterranean, and in the
Indian Ocean.
Script
import processing.opengl.*;
int ellipseX;
int ellipseY;
int ellipseXloc ;
int ellipseYloc ;
//everything in voidsetup is read once
void setup(){
size(500,500,OPENGL);
smooth();
//int ellipseXloc = width/2;
//int ellipseYloc = height/2;
}
void draw(){
background(0); //sets background color to 150
for (int j=0;j<height;j=j+20){//j++is short for j=j+1
for (int i=0;i<width;i=i+25){
pushMatrix();
float cellX=i;
float cellY=j;
float cellZ=constrain(i/4+mouseX/5,0,300);
float mouseDist=dist(cellX,cellY,mouseX,mouseY);
int s= second();
float m=millis();
translate(cellX,cellY);
if(mouseDist<300){
rotateY(radians(cellY)+120/mouseDist/2);// rotate drawing
rotateX(radians(cellX/3+120/mouseDist/2));
}
else{
rotateY (radians(cellX));
rotateX(radians(cellY/3));
}
if(mouseDist>300){
rotateY(radians(cellY)+mouseX/mouseDist/2);// rotate drawing
rotateX(radians(cellX/3+mouseY/mouseDist/2));
}
else{
rotateY (radians(cellX));
rotateX(radians(cellY/3));
}
scale(.5);
if(cellX<100&&cellX>100&&cellY>100&&cellY<150){
rotateX(TWO_PI/j);
stroke(220+i,0,0);
strokeWeight(1);
scale(constrain(j/4,1,2));
}else{
stroke(150);
strokeWeight(2);
}
if(mouseDist<width/2){
fill(mouseY,mouseX,90,30*i);
}
else{
fill(mouseY/2,mouseX,mouseY/4,m*i);
}
drawCell();
popMatrix();
}
}
}
void drawCell(){
ellipseX=mouseX;//constrained ellipseX size from 25-100
ellipseY=mouseY-50;
ellipseXloc=95;
ellipseYloc=100;
//sets ellipse to be center location minus half the diameter
int ellipseQuad1X=ellipseXloc-ellipseX/2;
int ellipseQuad1Y=ellipseYloc;
int ellipseQuad2X=ellipseXloc+ellipseX/2;
int ellipseQuad2Y=ellipseYloc;
//align aLine’s X position with ellipse center
int aLineX=ellipseXloc;
int aLineY=mouseY/4;
int aLineZ=50;
//offsets bLines Xposition 25 pixels to the right of the ellipse center
int bLineX=ellipseXloc+25;
int bLineY=mouseY/4;
int bLineZ=-50;
if (aLineY>50){
bLineX=-bLineY;
}
// noFill();
ellipse(ellipseXloc,ellipseYloc,ellipseX,ellipseY);
line (ellipseQuad1X, ellipseQuad1Y,0, aLineX,aLineY,aLineZ);
line (ellipseQuad2X, ellipseQuad2Y,0, aLineX,aLineY,aLineZ);
line (ellipseQuad1X, ellipseQuad1Y,0, bLineX,bLineY,bLineZ);
line (ellipseQuad2X, ellipseQuad2Y,0, bLineX,bLineY,bLineZ);
}
void keyPressed(){
if (key==’s’){
saveFrame(“######.jpg”);
}
}






















