703
edits
(19 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Form und Raum == | == Form und Raum == | ||
Segmente[] objekt = new Segmente[9]; | <source lang="Java" highlight="11,44,46,57,62,67,72,83,88,93,98,103,108,116,143,145,157">Segmente[] objekt = new Segmente[9]; | ||
void setup() { | void setup() { | ||
Line 8: | Line 7: | ||
smooth(); | smooth(); | ||
noStroke(); | noStroke(); | ||
frameRate( | //frameRate(25); | ||
colorMode(HSB,360,100,100,100); | colorMode(HSB,360,100,100,100); | ||
for (int i=0; i < objekt.length; i++) { | for (int i=0; i < objekt.length; i++) { | ||
objekt[i] = new Segmente() | objekt[i] = new Segmente(); //Konstruktor des Objekts | ||
} | } | ||
} | } | ||
Line 37: | Line 17: | ||
void draw() { | void draw() { | ||
background(0); | background(0); | ||
//male die Objekte nur wenn sie aktiviert bzw. sichtbar sind | |||
for (int i=0; i < objekt.length; i++) { | for (int i=0; i < objekt.length; i++) { | ||
if (objekt[i].visible) { | if (objekt[i].visible) { | ||
Line 43: | Line 23: | ||
} | } | ||
} | } | ||
//prüfe ob die Maus über dem Objekt ist | |||
for (int i=0; i < objekt.length; i++) { | for (int i=0; i < objekt.length; i++) { | ||
if ((mouseX >= objekt[i].x-objekt[i].r) && (mouseX <= objekt[i].x+objekt[i].r) && (mouseY >= objekt[i].y-objekt[i].r) && (mouseY <= objekt[i].y+objekt[i].r)) { | if ((mouseX >= objekt[i].x-objekt[i].r) && (mouseX <= objekt[i].x+objekt[i].r) && (mouseY >= objekt[i].y-objekt[i].r) && (mouseY <= objekt[i].y+objekt[i].r)) { | ||
Line 53: | Line 33: | ||
} | } | ||
void mouseDragged() { | void mouseDragged() { //verändere die Position des ausgewählten Objekts | ||
for (int i=objekt.length-1; i >= 0 ; i--) { | for (int i=objekt.length-1; i >= 0 ; i--) { | ||
if (objekt[i].mouseOver) { | if (objekt[i].mouseOver) { | ||
Line 65: | Line 45: | ||
void keyPressed() { | void keyPressed() { | ||
int k = (int)key-48-1; //Zahlenverschiebung: '1' entspricht objekt[0] | int k = (int)key-48-1; //Zahlenverschiebung: '1' entspricht objekt[0] | ||
//aktiviere bzw. mache das Objekt mit der jeweiligen Zahl sichtbar | |||
if ((k >= 0) && (k < objekt.length)) { | if ((k >= 0) && (k < objekt.length)) { | ||
if (objekt[k].visible == false) { | if (objekt[k].visible == false) { | ||
objekt[k].visible = true; | objekt[k].visible = true; | ||
}else if (objekt[k].visible) { | }else if (objekt[k].visible) { //oder wieder unsichtbar | ||
objekt[k].visible = false; | objekt[k].visible = false; | ||
} | } | ||
} | } | ||
//verändere die Segmentzahl oder Farbe des ausgewählten Objekts (UP,DOWN,LEFT,RIGHT) | |||
if (key == CODED) { | if (key == CODED) { | ||
for (int i=0; i < objekt.length; i++) { | for (int i=0; i < objekt.length; i++) { | ||
Line 100: | Line 80: | ||
} | } | ||
} | } | ||
//verändere Radius (+,-), Alphawert (,,.) und Gradzahl bzw. Richtung (/,*) des Objekts | |||
for (int i=0; i < objekt.length; i++) { | for (int i=0; i < objekt.length; i++) { | ||
if (objekt[i].mouseOver) { | if (objekt[i].mouseOver) { | ||
if (key == ' | if (key == '+') { | ||
if (objekt[i].r <= 200) { | if (objekt[i].r <= 200) { | ||
objekt[i].r += 1; | objekt[i].r += 1; | ||
} | } | ||
} | } | ||
if (key == ' | if (key == '-') { | ||
if (objekt[i].r >= 50) { | if (objekt[i].r >= 50) { | ||
objekt[i].r -= 1; | objekt[i].r -= 1; | ||
} | } | ||
} | } | ||
if (key == ' | if (key == ',') { | ||
if (objekt[i].a <= 100) { | if (objekt[i].a <= 100) { | ||
objekt[i].a += 1; | objekt[i].a += 1; | ||
} | } | ||
} | } | ||
if (key == ' | if (key == '.') { | ||
if (objekt[i].a >= 10) { | if (objekt[i].a >= 10) { | ||
objekt[i].a -= 1; | objekt[i].a -= 1; | ||
Line 135: | Line 115: | ||
} | } | ||
} | } | ||
//erzeuge Zufallswerte bei allen Objekten (ENTER) | |||
if (key == ENTER || key == RETURN) { | if (key == ENTER || key == RETURN) { | ||
for (int i=0; i < objekt.length; i++) { | for (int i=0; i < objekt.length; i++) { | ||
objekt[i].x = random(width); | objekt[i].x = random(width); | ||
objekt[i].y = random(height); | objekt[i].y = random(height); | ||
//bessere Verteilung der Werte bzw. weniger Kreise | |||
switch((int)random(4)) { | switch((int)random(4)) { | ||
case 0: | case 0: | ||
Line 161: | Line 141: | ||
} | } | ||
} | } | ||
//aktiviere die Bewegung aller Objekte (0) | |||
for (int i=0; i < objekt.length; i++) { | for (int i=0; i < objekt.length; i++) { | ||
if ((key == '0') && (objekt[i].move == false)) { | if ((key == '0') && (objekt[i].move == false)) { | ||
objekt[i].move = true; | objekt[i].move = true; | ||
}else if ((key == '0') && (objekt[i].move)) { | }else if ((key == '0') && (objekt[i].move)) { //oder deaktiviere sie | ||
objekt[i].move = false; | objekt[i].move = false; | ||
} | } | ||
Line 171: | Line 151: | ||
} | } | ||
void mouseMoved() { | void mouseMoved() { //bewege alle Objekte, außer das ausgewählte, frei im Raum | ||
for (int i=0; i < objekt.length; i++) { | for (int i=0; i < objekt.length; i++) { | ||
if ((objekt[i].move == true) && (objekt[i].mouseOver == false)) { | if ((objekt[i].move == true) && (objekt[i].mouseOver == false)) { | ||
objekt[i].x = objekt[i].x + objekt[i].sx; | objekt[i].x = objekt[i].x + objekt[i].sx; | ||
objekt[i].y = objekt[i].y + objekt[i].sy; | objekt[i].y = objekt[i].y + objekt[i].sy; | ||
//drehe das Objket | |||
objekt[i].g = objekt[i].g + 1; | |||
if (objekt[i].g >= 360) { | |||
objekt[i].g = 0; | |||
} | |||
//wechsel die Bewegungsrichtung, wenn das Objekt an den Rand stößt | |||
if (objekt[i].x >= width || objekt[i].x <= 0){ | if (objekt[i].x >= width || objekt[i].x <= 0){ | ||
objekt[i].sx = -objekt[i].sx; | objekt[i].sx = -objekt[i].sx; | ||
Line 186: | Line 171: | ||
} | } | ||
} | } | ||
</source> | |||
== Segmente == | == Segmente == | ||
class Segmente { | <source lang="Java" highlight="12">class Segmente { | ||
float x; // X-Position | float x; // X-Position | ||
Line 196: | Line 182: | ||
int seg; // Segmentzähler | int seg; // Segmentzähler | ||
int r; // Radius | int r; // Radius | ||
float g; // Richtung bzw. | float g; // Richtung bzw. Gradzahl | ||
boolean mouseOver; //Maus über dem Objekt | boolean mouseOver; //Maus über dem Objekt | ||
Line 207: | Line 193: | ||
Segmente() { | Segmente() { | ||
println("Segmente erstellt!"); | //println("Segmente erstellt!"); | ||
x = random(100,width-100); | |||
y = random(100,height-100); | |||
seg = (int)random(6); | |||
r = 100; | |||
g = 90; // Richtung nach oben | |||
h = (int)random(360); | |||
s = 100; | |||
b = 100; | |||
a = 100; | |||
mouseOver = false; | |||
visible = true; | |||
move = false; | |||
sx = 5; | |||
sy = 5; | |||
} | } | ||
Line 215: | Line 219: | ||
} | } | ||
//abgewandelte Funktion aus dem Buch "Generative Gestaltung" Seite 187 | |||
void maleSegmente(int seg,int r,float g,float x,float y) { | void maleSegmente(int seg,int r,float g,float x,float y) { | ||
float segmentzahl = 3 + (float)seg; | float segmentzahl = 3 + (float)seg; | ||
float angleStep = 360/segmentzahl; | float angleStep = 360/segmentzahl; | ||
//zeichnet Linien über die berechneten Punkte auf der äußeren Kreisbahn | |||
beginShape(); | beginShape(); | ||
vertex(x, y); | vertex(x, y); | ||
Line 230: | Line 235: | ||
} | } | ||
} | } | ||
</source> |
edits