Flesh Tones:

New Architectural Membranes for a Changing Planet

Diagrams

Sep 25. 2006 Posted by petrinec | Research | | 1 Comment

Processing

0107.jpg

0168.jpg

0163.jpg

0153.jpg

0130.jpg

0120.jpg

Sep 25. 2006 Posted by petrinec | Processing | | No Comments Yet

Script

import processing.opengl.*;
//PDF
import processing.pdf.*;
boolean dosave=false;
//PDF

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 Start

if(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);
}

///////////////////////////////////////////PDF
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;
}
//////////////////PDF
}

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);
}

Sep 19. 2006 Posted by petrinec | Script | | No Comments Yet

Processing

Sep 19. 2006 Posted by petrinec | Processing | | No Comments Yet

Research

project-1-research-poster2.pdfproject-1-research-poster2-copy.jpgdiagram-copy.jpg
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.

Sep 12. 2006 Posted by petrinec | Research | | No Comments Yet

Processing

 repose-affirm.jpg

trauma-retort.jpg

instigate-reinforcement.jpg

assemblagefortification.jpg

Sep 12. 2006 Posted by petrinec | Processing | | No Comments Yet

Script

import processing.opengl.*;
//PDF
import processing.pdf.*;
boolean dosave=false;
//PDF
int ellipseXloc;
int ellipseYloc;
float ellipseX;
float ellipseY;
void setup(){
  size(500,500,OPENGL);
}
void draw(){
  ////////////////////////////////////////////PDF Start
 

if(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);
  }
 
///////////////////////////////////////////PDF
  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;
  }
//////////////////PDF
}
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);
}
 

Sep 11. 2006 Posted by petrinec | Script | | No Comments Yet

Research

project-1-research-poster.jpg

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. 

Sep 8. 2006 Posted by petrinec | Research | | 1 Comment

Processing

tranquil.jpg

anxiety.jpg

protected.jpg

assail.jpg

Sep 8. 2006 Posted by petrinec | Processing | | No Comments Yet

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”);
    }
  }

Sep 8. 2006 Posted by petrinec | Script | | No Comments Yet