U0209 Vom Punkt zur Fläche
Erzeuge eine Bildsequenz vom Punkt zur Fläche durch das Hinzufügen progressiv wachsender – also prozentual größer werdender – Punkte (kreisförmige, schwarze Flächen) in sechs Einzelbildern. Der Rand kann bei Bedarf angeschnitten werden.
Erstelle insgesamt zwei verschiedene Bildsequenzen Füge die Möglichkeit (Funktion) des Anschnitts den Grundflächen hinzu.
Welche neuen Fragen ergeben sich? Was ist zu beobachten? Dokumentieren sie ihr Ergebnis in MKDocs.

Reflexion:
Ich habe zuerst den Mausfaktor zu hoch eingestellt. Die Punkte waren dann irgendwann zu groß, um sie vernünftig anordnen zu können. Ich bin mir auch nicht sicher, ob ich die Aufgabe richtig verstanden habe, und es nicht pro Kachel eine prozentuale Erhöhung der Punktgröße geben sollte.
Ich habe im zweiten Bild den Mousefaktor reduziert, und zu pro positionierten Punkt die Größe erhöht. Ich habe auch beim zweiten Mal weniger Punkte genommen und alle 6 Kacheln der Reihe nach bepunktet, um nicht zu schnell eine nichthandelbare Größe zu erhalten. Der interessante Nebeneffekt ist, dass die Serie wie eine kosmische Katastrophe ausschaut. Der kleine Punkt In den Serien als Mond des Mittleren, der Große der kollidierende Himmelskörper. In der Serie Überlagern sich die Punkte in einem Umkreisen, ähnlich des Falken beim Paarungsrituals. Nur zerstörerischer. Müsste ich die Serie benennen, wäre sie zweigeteilt in 'Prolog' für die ersten drei Kacheln, und 'Untergang in drei Akten' für die letzten.
Zu beobachten ist: es stellt sich keine Flächenwirkung ein. Dafür hätte ich vermutlich Punkte in einem Raster anordnen und vergrößern müssen. Würde ich die Übung nocheimal machen, würde ich diesen Ansatz wählen, sofern die Fläche das Ziel der Übung ist. Ich habe auch interessante Kupferstichtechniken gesehen, die Flächen mit punkten ausfüllen und die Reliefstruktur durch einen vergrößerten Abstand der Punkte zueinander umsetzen. Durch die visuell verbundenen Leerstellen werden so Konturen angedeutet. Diese Technik scheint eine Studie ebenfalls zu lohnen.
Code:
// --- Einstellungen ---
int cols = 3;
int rows =3;
int mousefactor = 2;
float padding = 10;
float pointSize = 10;
float cellSize;
float startX, startY;
ArrayList<Dot> dots;
void setup() {
size(1000, 700);
dots = new ArrayList<Dot>();
// Quadratgröße richtet sich nach Höhe
cellSize = (height - padding * (rows + 1)) / rows;
float totalWidth = cols * cellSize + (cols + 1) * padding;
startX = (width - totalWidth) / 2 + padding;
startY = padding;
}
void draw() {
background(200); // Hintergrund leicht grau für Kontrast
// Raster zeichnen
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
float x = startX + i * (cellSize + padding);
float y = startY + j * (cellSize + padding);
fill(255);
stroke(0);
rect(x, y, cellSize, cellSize);
}
}
// Punkte zeichnen
for (Dot d : dots) {
d.display();
}
// Punktgröße anzeigen
fill(0);
text("Punktgröße: " + pointSize, 10, height - 10);
}
void mousePressed() {
// Punkt an Klickposition hinzufügen
dots.add(new Dot(mouseX, mouseY, pointSize));
mousefactor ++; // Schnipsel für U0209 (vergrößert Punkt nach jedem Klick)
pointSize = pointSize + 0.75 * mousefactor;
}
void keyPressed() {
if (key == '+' || key == '=') {
pointSize += 10;
if (pointSize > 1000) pointSize = 1000;
}
if (key == '\t') { // Lifeimprovement -> löscht alle Punkte nach TAB
dots.clear();
mousefactor = 2; // Schnipsel für U0209
pointSize = 10; // Schnipsel für U0209
}
if (key == 'z') { // Lifeimprovement -> löscht letzten Punkt nach z
if (dots.size() - 1 >= 0) {
dots.remove(dots.size() - 1);
}
}
if (key == '-' || key == '_') { // Punktgröße
pointSize -= 10;
if (pointSize < 2) pointSize = 2;
}
}
// Punktklasse
class Dot {
PVector pos;
float size;
Dot(float x, float y, float s) {
pos = new PVector(x, y);
size = s;
}
void display() {
fill(0);
noStroke();
circle(pos.x, pos.y, size);
}
}