Codes zu »Form & Farbe«
Drei
// Anordnungen von Dreiecken
// Sebastian Wolf
// Bauhaus-Universität Weimar
// Digital Bauhaus Vorkurs
// Wintersemester 2010/11
// ControlP5 by Andreas Schlegel
import controlP5.*;
// CONTROL
ControlP5 controlP5;
float mode = 1;
int speed = 50;
int positionX = 10;
int positionY = 125;
int Width = 100;
int Height = 10;
// WINDOW
int bildbreite = 1000; // Fensterbreite in px
int bildhoehe = int(bildbreite * 0.5625); // 16/9 Format
// COLORS
int clr = 255; // Ausgangsfarbwert
int bgcolor = 50; // Farbe Hintergrund
int Saturation = 150; // Sättigung der Dreiecke
// FORM
int richtung = 2; // Drehung des Dreiecks
int radius = 50; // Radius des Dreiecks
void setup() {
size(bildbreite, bildhoehe);
colorMode(HSB, 255); // HSB Farbmodus - Farbton-Sättigung-Helligkeit
noStroke();
smooth();
background(bgcolor);
// CONTROL
controlP5 = new ControlP5(this);
// SLIDER (name, min, max, default, x, y, w, h)
controlP5.addSlider("Saturation", 1, 255, Saturation, positionX, positionY, Width, Height);
controlP5.addSlider("bgcolor", 1, 255, bgcolor, positionX, positionY + 15, Width, Height);
controlP5.addSlider("radius", 1, 100, radius, positionX, positionY + 30, Width, Height);
controlP5.addSlider("speed", 1, 100, speed, positionX, positionY + 45, Width, Height);
// BUTTONS (name, value, x, y, w, h)
controlP5.addButton("mode", mode, positionX, positionY + 60, Width/2, Height);
Button m = (Button)controlP5.controller("mode");
m.setCaptionLabel("mode I");
controlP5.addButton("Save", 0, positionX + Width/2, positionY + 60, Width/2, Height);
}
void draw() {
bg(); // zeichnet Hintergrund
form(); // zeichnet Dreicke
}
// DRAWING MODE
void mode() {
mode = (mode+1)%2;
Button m = (Button)controlP5.controller("mode");
if(mode == 1) {
m.setCaptionLabel("mode I");
}
else {
m.setCaptionLabel("mode II");
}
}
// PNG SAVING
void Save() {
saveFrame(timestamp()+"_##.png"); // png speichern
}
// BACKGROUND
void bg() {
if(mode == 1) { // bestimmt ob Dreiecke überschrieben werden oder
fill(bgcolor, 255);
}
else { // auf dem Bildschirm bleiben
fill(bgcolor, 0);
}
rect(0, 0, width, height);
}
// FORM
void form() {
delay(150 - speed);
richtung = int(random(4))+1; // zufällige Ausrichtung für Dreieck
clr = int(random(255)); // zufälliger Farbton für Dreick
fill(clr, Saturation, 255);
// int richtung, float posX, float posY, float radius
dreieck(richtung, int(random((width+2*radius)/(2*radius)))*2*radius+radius, int(random((height+2*radius)/(2*radius)))*2*radius+radius, radius);
}
// TRIANGLE
void dreieck(int richtung, float posX, float posY, float radius) {
switch(richtung) {
case 1:
triangle(posX-radius, posY-radius, posX+radius, posY-radius, posX-radius, posY+radius);
break;
case 2:
triangle(posX-radius, posY-radius, posX+radius, posY-radius, posX+radius, posY+radius);
break;
case 3:
triangle(posX+radius, posY+radius, posX+radius, posY-radius, posX-radius, posY+radius);
break;
case 4:
triangle(posX-radius, posY-radius, posX-radius, posY+radius, posX+radius, posY+radius);
break;
}
}
// TIMESTAMP (for png saving)
String timestamp() {
Calendar now = Calendar.getInstance();
return String.format("%1$tm:%1$td:%1$ty %1$tH%1$tM", now);
}
Farbharmonisches Chaos
xxx