Digital Bauhaus Vorkurs/Projekte/Form und Raum/Code6

From Medien Wiki
< Digital Bauhaus Vorkurs‎ | Projekte‎ | Form und Raum
Revision as of 21:20, 21 January 2011 by Anni (talk | contribs) (Created page with " == Objektorientiertes Gestaltungsprogramm == Segmente Objekt1,Objekt2,Objekt3; //int[] Objekt = new int[6]; void setup() { size(800, 800); smooth(); noStroke(); frameR...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Objektorientiertes Gestaltungsprogramm

Segmente Objekt1,Objekt2,Objekt3; //int[] Objekt = new int[6];

void setup() {

 size(800, 800);
 smooth();
 noStroke();
 frameRate(5);
 colorMode(HSB,360,100,100);
 
 Objekt1 = new Segmente();
 Objekt2 = new Segmente();
 Objekt3 = new Segmente();
 
 Objekt1.x = 200;  Objekt2.x = 400; Objekt3.x = 600;
 Objekt1.y = 400;  Objekt2.y = 400; Objekt3.y = 400;
 
 Objekt1.seg = 0;  Objekt2.seg = 0; Objekt3.seg = 0; // Dreieck
 Objekt1.r = 100; Objekt2.r = 100; Objekt3.r = 100;
 Objekt1.g = 90; Objekt2.g = 90; Objekt3.g = 90; // Richtung nach oben
 
 Objekt1.h = 0;  Objekt2.h = 90; Objekt3.h = 180;
 Objekt1.s = 100; Objekt2.s = 100; Objekt3.s = 100;
 Objekt1.b = 100; Objekt2.b = 100; Objekt3.b = 100;
 
 Objekt1.mouseOver = false;  Objekt2.mouseOver = false; Objekt3.mouseOver = false;
 Objekt1.visibel = false; Objekt2.visibel = false; Objekt3.visibel = false;

}

void draw() {

 background(0);
 
 if (keyPressed == true) {
   if (key == '1') {
     Objekt1.visibel = true;
   }
   if (key == '2') {
     Objekt2.visibel = true;
   }
   if (key == '3') {
     Objekt3.visibel = true;
   }
 }
 
 if (Objekt1.visibel == true) {
   Objekt1.maleSegmente();
 }
 if (Objekt2.visibel == true) {
   Objekt2.maleSegmente();
 }
 if (Objekt3.visibel == true) {
   Objekt3.maleSegmente();
 }
 
 if (mouseX >= Objekt1.x-Objekt1.r && mouseX <= Objekt1.x+Objekt1.r && mouseY >= Objekt1.y-Objekt1.r && mouseY <= Objekt1.y+Objekt1.r) {
   Objekt1.mouseOver = true;
 }else {
   Objekt1.mouseOver = false;
 }
 if (mouseX >= Objekt2.x-Objekt2.r && mouseX <= Objekt2.x+Objekt2.r && mouseY >= Objekt2.y-Objekt2.r && mouseY <= Objekt2.y+Objekt2.r) {
   Objekt2.mouseOver = true;
 }else {
   Objekt2.mouseOver = false;
 }
 if (mouseX >= Objekt3.x-Objekt3.r && mouseX <= Objekt3.x+Objekt3.r && mouseY >= Objekt3.y-Objekt3.r && mouseY <= Objekt3.y+Objekt3.r) {
   Objekt3.mouseOver = true;
 }else {
   Objekt3.mouseOver = false;
 }

}

void mouseDragged() {

 if (Objekt1.mouseOver == true) {
   Objekt1.x = mouseX;
   Objekt1.y = mouseY;
 }else if (Objekt2.mouseOver == true) {
   Objekt2.x = mouseX;
   Objekt2.y = mouseY;
 }else if (Objekt3.mouseOver == true) {
   Objekt3.x = mouseX;
   Objekt3.y = mouseY;
 }

}

void keyPressed() {

 if (key == CODED) {
   if (Objekt1.mouseOver == true) {
     if (keyCode == UP) {
       if (Objekt1.seg <= 101) {
         Objekt1.seg += 1;
       }
     }
     if (keyCode == DOWN) {
       if (Objekt1.seg >= 1) {
         Objekt1.seg -= 1;
       }
     } 
     if (keyCode == RIGHT) {
       if (Objekt1.h <= 361) {
         Objekt1.h += 1;
       }
     }
     if (keyCode == LEFT) {
       if (Objekt1.h >= 1) {
         Objekt1.h -= 1;
       }
     }
   }
   if (Objekt2.mouseOver == true) {
     if (keyCode == UP) {
       if (Objekt2.seg <= 101) {
         Objekt2.seg += 1;
       }
     }
     if (keyCode == DOWN) {
       if (Objekt2.seg >= 1) {
         Objekt2.seg -= 1;
       }
     } 
     if (keyCode == RIGHT) {
       if (Objekt2.h <= 361) {
         Objekt2.h += 1;
       }
     }
     if (keyCode == LEFT) {
       if (Objekt2.h >= 1) {
         Objekt2.h -= 1;
       }
     }
   }
   if (Objekt3.mouseOver == true) {
     if (keyCode == UP) {
       if (Objekt3.seg <= 101) {
         Objekt3.seg += 1;
       }
     }
     if (keyCode == DOWN) {
       if (Objekt3.seg >= 1) {
         Objekt3.seg -= 1;
       }
     } 
     if (keyCode == RIGHT) {
       if (Objekt3.h <= 361) {
         Objekt3.h += 1;
       }
     }
     if (keyCode == LEFT) {
       if (Objekt3.h >= 1) {
         Objekt3.h -= 1;
       }
     }
   }
 }

}

Segmente

class Segmente {

 float x; // X-Position
 float y; // Y-Position
 
 float seg; // Segmentzähler
 int r; // Radius
 float g; // Richtung
 
 boolean mouseOver; //Maus über dem Objekt
 boolean visibel; //Objekt sichtbar
 
 int h,s,b; // Farbe HSB
 
 Segmente() {
   println("Segmente erstellt!");
 }
 
 void maleSegmente() {
   fill(h,s,b);
   maleSegmente(seg,r,g,x,y);
 }
 
 void maleSegmente(float seg,int r,float g,float x,float y) {
   float segmentzahl = 3 + seg;
   float angleStep = 360/segmentzahl;
   
   beginShape();
   vertex(x, y); 
   for (float angle=0; angle<=360; angle+=angleStep) {
     float vx = x + cos(radians(angle-g))*r;
     float vy = y + sin(radians(angle-g))*r;
     vertex(vx, vy);
   }
   vertex(x + cos(radians(360-g))*r, y + sin(radians(360-g))*r);
   endShape();
 }

}