Digital Bauhaus Vorkurs/Projekte/Form und Farbe/code

From Medien Wiki

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