WSebastian (talk | contribs) mNo edit summary |
WSebastian (talk | contribs) mNo edit summary |
||
Line 129: | Line 129: | ||
=== Farbharmonisches Chaos === | === Farbharmonisches Chaos === | ||
<source lang="Java" highlight="1, 2, 3, 4, 5, 7" float seg = 0;> | <source lang="Java" highlight="1, 2, 3, 4, 5, 7, 8, 9" float seg = 0;> | ||
// Farbharmonisches Chaos | |||
// Sebastian Wolf | |||
// Bauhaus-Universität Weimar | |||
// Digital Bauhaus Vorkurs | |||
// Wintersemester 2010/11 | |||
// .ase export by Generative Gestaltung | |||
// ControlP5 by Andreas Schlegel | |||
// colorLib by Jan Vantomme | |||
import colorLib.*; | |||
import generativedesign.*; | |||
import controlP5.*; | |||
// CONTROL | |||
ControlP5 controlP5; | |||
float mode = 1; | |||
int positionX = 10; | |||
int positionY = 125; | |||
int Width = 100; | |||
int Height = 10; | |||
int clear = 2; | |||
// WINDOW | |||
int bildbreite = 1000; // Fensterbreite in px | |||
int bildhoehe = int(bildbreite * 0.5625); // 16/9 Format | |||
// COLORS | |||
Palette farben; // Farbpalette | |||
float base = random(255); // Ausgangsfarbwert (kann nur zu Beginn verändert werden) | |||
color clr; // Farbe der Objekte | |||
color bgclr = color(50); // Farbe Hintergrund | |||
int alph = 50; // alpha-Wert der Objekte | |||
// OBJECTS | |||
ArrayList kreise; // Array aus Kreisen (Objekt Circle) | |||
int countMax = 400; // max. Anzahl der Kreise | |||
int count = 150; // Anzahl der Kreise | |||
float radius = 4; // Radius der Kreise | |||
float xPos; // x-Koordinate Kreis | |||
float yPos; // y-Koordinate Kreis | |||
void setup() { | |||
size(bildbreite, bildhoehe); | |||
colorMode(HSB, 255); | |||
noStroke(); | |||
smooth(); | |||
farben = new Palette(this); | |||
kreise = new ArrayList(); | |||
kreise.add(new Circle(xPos, yPos, radius, clr)); | |||
// CONTROL | |||
controlP5 = new ControlP5(this); | |||
// SLIDER (name, min, max, default, x, y, w, h) | |||
controlP5.addSlider("base", 0, 255, base, positionX, positionY, Width, Height); | |||
controlP5.addSlider("radius", 1, 60, radius, positionX, positionY + 15, Width, Height); | |||
controlP5.addSlider("count", 1, countMax, count, positionX, positionY + 30, Width, Height); | |||
// BUTTONS (name, value, x, y, w, h) | |||
controlP5.addButton("Start", 0, positionX, positionY + 45, Width/2, Height); | |||
controlP5.addButton("clear", clear, positionX + Width/2, positionY + 45, Width/2, Height); | |||
controlP5.addButton("SavePNG", 0, positionX, positionY + 60, Width/2, Height); | |||
Button png = (Button)controlP5.controller("SavePNG"); | |||
png.setCaptionLabel("Save .png"); | |||
controlP5.addButton("SaveASE", 0, positionX + Width/2, positionY + 60, Width/2, Height); | |||
Button ase = (Button)controlP5.controller("SaveASE"); | |||
ase.setCaptionLabel("Save .ase"); | |||
controlP5.addButton("mode", mode, positionX, positionY + 75, Width/2, Height); | |||
Button m = (Button)controlP5.controller("mode"); | |||
m.setCaptionLabel("RANDOM"); | |||
background(bgclr); | |||
create(); | |||
} | |||
void draw() { | |||
if(clear == 1) { | |||
for (int i = count; i >= 0; i--) { | |||
Circle kreis = (Circle) kreise.get(i); | |||
kreis.move(); | |||
kreis.render(radius); | |||
} | |||
} | |||
else { | |||
background(bgclr); | |||
fill(color(base, 255, 255)); | |||
ellipse(30, 100, radius*2, radius*2); | |||
} | |||
} | |||
// DRAWING MODE | |||
void mode() { | |||
mode = (mode+1)%2; | |||
Button m = (Button)controlP5.controller("mode"); | |||
if(mode == 1) { | |||
m.setCaptionLabel("RANDOM"); | |||
} | |||
else { | |||
m.setCaptionLabel("CENTER"); | |||
} | |||
} | |||
void Start() { | |||
clear = 1; | |||
background(bgclr); | |||
create(); | |||
} | |||
void clear() { | |||
clear = 2; | |||
background(bgclr); | |||
} | |||
// PNG SAVING | |||
void SavePNG() { // png speichern | |||
saveFrame(timestamp()+"_##.png"); | |||
} | |||
// ASE SAVING | |||
void SaveASE() { // ase speichern (Adobe Farbpalette) | |||
color[] colors = new color[farben.totalSwatches()]; | |||
for (int i = 0; i < farben.totalSwatches(); i++) { | |||
colors[i] = farben.getColor(i); | |||
} | |||
GenerativeDesign.saveASE(this, colors, timestamp()+".ase"); | |||
} | |||
public void create() { | |||
kreise.clear(); | |||
farben.makeTriad(color(base, random(200, 255), 255, alph)); // Harmonie | |||
for (int i = 0; i < countMax; i++) { | |||
if(mode == 1) { | |||
xPos = random(width); | |||
yPos = random(height); | |||
} | |||
else { | |||
xPos = width/2; | |||
yPos = height/2; | |||
} | |||
clr = farben.getColor(int(random(0, farben.totalSwatches()))); | |||
kreise.add(new Circle(xPos, yPos, radius, clr)); | |||
} | |||
} | |||
String timestamp() { | |||
Calendar now = Calendar.getInstance(); | |||
return String.format("%1$tm:%1$td:%1$ty %1$tH%1$tM", now); | |||
} | |||
</source> | </source> |
Revision as of 22:27, 31 March 2011
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
// Farbharmonisches Chaos
// Sebastian Wolf
// Bauhaus-Universität Weimar
// Digital Bauhaus Vorkurs
// Wintersemester 2010/11
// .ase export by Generative Gestaltung
// ControlP5 by Andreas Schlegel
// colorLib by Jan Vantomme
import colorLib.*;
import generativedesign.*;
import controlP5.*;
// CONTROL
ControlP5 controlP5;
float mode = 1;
int positionX = 10;
int positionY = 125;
int Width = 100;
int Height = 10;
int clear = 2;
// WINDOW
int bildbreite = 1000; // Fensterbreite in px
int bildhoehe = int(bildbreite * 0.5625); // 16/9 Format
// COLORS
Palette farben; // Farbpalette
float base = random(255); // Ausgangsfarbwert (kann nur zu Beginn verändert werden)
color clr; // Farbe der Objekte
color bgclr = color(50); // Farbe Hintergrund
int alph = 50; // alpha-Wert der Objekte
// OBJECTS
ArrayList kreise; // Array aus Kreisen (Objekt Circle)
int countMax = 400; // max. Anzahl der Kreise
int count = 150; // Anzahl der Kreise
float radius = 4; // Radius der Kreise
float xPos; // x-Koordinate Kreis
float yPos; // y-Koordinate Kreis
void setup() {
size(bildbreite, bildhoehe);
colorMode(HSB, 255);
noStroke();
smooth();
farben = new Palette(this);
kreise = new ArrayList();
kreise.add(new Circle(xPos, yPos, radius, clr));
// CONTROL
controlP5 = new ControlP5(this);
// SLIDER (name, min, max, default, x, y, w, h)
controlP5.addSlider("base", 0, 255, base, positionX, positionY, Width, Height);
controlP5.addSlider("radius", 1, 60, radius, positionX, positionY + 15, Width, Height);
controlP5.addSlider("count", 1, countMax, count, positionX, positionY + 30, Width, Height);
// BUTTONS (name, value, x, y, w, h)
controlP5.addButton("Start", 0, positionX, positionY + 45, Width/2, Height);
controlP5.addButton("clear", clear, positionX + Width/2, positionY + 45, Width/2, Height);
controlP5.addButton("SavePNG", 0, positionX, positionY + 60, Width/2, Height);
Button png = (Button)controlP5.controller("SavePNG");
png.setCaptionLabel("Save .png");
controlP5.addButton("SaveASE", 0, positionX + Width/2, positionY + 60, Width/2, Height);
Button ase = (Button)controlP5.controller("SaveASE");
ase.setCaptionLabel("Save .ase");
controlP5.addButton("mode", mode, positionX, positionY + 75, Width/2, Height);
Button m = (Button)controlP5.controller("mode");
m.setCaptionLabel("RANDOM");
background(bgclr);
create();
}
void draw() {
if(clear == 1) {
for (int i = count; i >= 0; i--) {
Circle kreis = (Circle) kreise.get(i);
kreis.move();
kreis.render(radius);
}
}
else {
background(bgclr);
fill(color(base, 255, 255));
ellipse(30, 100, radius*2, radius*2);
}
}
// DRAWING MODE
void mode() {
mode = (mode+1)%2;
Button m = (Button)controlP5.controller("mode");
if(mode == 1) {
m.setCaptionLabel("RANDOM");
}
else {
m.setCaptionLabel("CENTER");
}
}
void Start() {
clear = 1;
background(bgclr);
create();
}
void clear() {
clear = 2;
background(bgclr);
}
// PNG SAVING
void SavePNG() { // png speichern
saveFrame(timestamp()+"_##.png");
}
// ASE SAVING
void SaveASE() { // ase speichern (Adobe Farbpalette)
color[] colors = new color[farben.totalSwatches()];
for (int i = 0; i < farben.totalSwatches(); i++) {
colors[i] = farben.getColor(i);
}
GenerativeDesign.saveASE(this, colors, timestamp()+".ase");
}
public void create() {
kreise.clear();
farben.makeTriad(color(base, random(200, 255), 255, alph)); // Harmonie
for (int i = 0; i < countMax; i++) {
if(mode == 1) {
xPos = random(width);
yPos = random(height);
}
else {
xPos = width/2;
yPos = height/2;
}
clr = farben.getColor(int(random(0, farben.totalSwatches())));
kreise.add(new Circle(xPos, yPos, radius, clr));
}
}
String timestamp() {
Calendar now = Calendar.getInstance();
return String.format("%1$tm:%1$td:%1$ty %1$tH%1$tM", now);
}