U0212 Balance - Dreiecke
Aufgabenstellung:
Erzeuge sechzehn Bilder (Vollbild) mit je drei Dreiecken. Position sowie die Größe der Dreiecke soll per Zufall definiert werden. Beurteile jedes Bild nach seiner Balance.
Mein Ergebnis:
Schließlich habe ich den vorherigen Code wieder umprogrammiert, sodass statt Quadraten nun Dreiecke entstehen. Für diese Aufgabe habe ich außerdem die Rotation randomisiert, da mir das für den Effekt dieser Aufgabe sehr wichtig erschien.
Ich finde es dabei ziemlich interessant, dass es manchmal so wirkt, als wären mehr als nur drei Dreiecke zu sehen – besonders dann, wenn sich die Dreiecke überlappen und neue Spitzen hervorschauen.
Mein Favorit ist vielleicht überraschenderweise die achte Zelle mit den drei kleineren Dreiecken. Diese wirken fast unabhängig voneinander, während es in den meisten anderen Zellen eher so wirkt, als würden die Dreiecke „aufeinander losgehen“.
Insgesamt würde ich aus diesen drei Aufgaben sagen, dass mir die Kreise am besten gefallen. Sie erzeugen meiner Meinung nach die harmonischsten Beziehungen, vermutlich aufgrund der geringeren Anzahl an Punkten.
int rows = 4;
int cols = 4;
float cellPadding = 20;
float squareSpacing = 10;
void setup() {
size(700, 700);
rectMode(CENTER);
noLoop();
}
void draw() {
background(200);
drawMatrixWithTriangles();
}
void drawMatrixWithTriangles() {
float cellWidth = (width - (cols + 1) * cellPadding) / cols;
float cellHeight = (height - (rows + 1) * cellPadding) / rows;
float squareSize = min(cellWidth, cellHeight) - squareSpacing;
for (int row = 0; row < rows; row++) {
for (int col = 0; col < cols; col++) {
float cellX = cellPadding + col * (cellWidth + cellPadding);
float cellY = cellPadding + row * (cellHeight + cellPadding);
float centerX = cellX + cellWidth / 2;
float centerY = cellY + cellHeight / 2;
// cell formatting
fill(255);
stroke(50);
rect(centerX, centerY, squareSize, squareSize);
// triangles
for (int i = 0; i < 3; i++) {
float size = random(10, squareSize / 2);
float offsetX = random(-squareSize / 2 + size / 2, squareSize / 2 - size / 2);
float offsetY = random(-squareSize / 2 + size / 2, squareSize / 2 - size / 2);
float triX = centerX + offsetX;
float triY = centerY + offsetY;
fill(0); // black
noStroke();
// Draw an equilateral triangle centered at (triX, triY)
pushMatrix();
translate(triX, triY);
rotate(random(TWO_PI)); // random rotation for variety
float h = size * sqrt(3) / 2; // height of equilateral triangle
beginShape();
vertex(-size / 2, h / 3);
vertex(size / 2, h / 3);
vertex(0, -2 * h / 3);
endShape(CLOSE);
popMatrix();
}
}
}
}
void keyPressed() {
if (key == 's') {
saveFrame("######.png");
}
// re-randomize
if (key == 'r') {
redraw();
}
}
