U0204 Formation von Punkten
Aufgabenstellung:
Positionieren Sie in jeder Fläche neun gleichgroße Punkte. Finden Sie Formationen für folgende Begriffe:
* Streuung
* Ansammlung
* Ausgrenzung
* Hierarchie
* Flucht
* Wachsamkeit
Mein Ergebnis:
Diese Aufgabe schien im Vergleich zu den vorherigen deutlich einfacher, wahrscheinlich weil ich statt 12 verschiedener Canvases nur 6 gestalten musste. Die Anzahl der Punkte hat es mir außerdem erlaubt, etwas kreativer zu sein und die Adjektive sowie meine damit verbundenen Emotionen genauer darzustellen.
Persönlich habe ich das Gefühl, dass „Ansammlung“ bei mir die positivste Reaktion hervorruft. Die kreisförmige Anordnung der Punkte vermittelt ein einladenderes Gefühl als „Wachsamkeit“, und die Dichte der Punkte wirkt so, als würden sie zusammenarbeiten, um ein Gemeinschaftsgefühl zu schaffen – im Gegensatz zu allem anderen.
Die Darstellung von Hierarchie fühlt sich meiner Meinung nach hier etwas unbehaglich an, vielleicht aufgrund der „fallenden“ Anordnung der Punkte.
// dots
ArrayList<Dot> dots;
// dragging
Dot selectedDot = null;
float offsetX, offsetY;
void setup() {
size(600, 400);
// list of dots
dots = new ArrayList<Dot>();
}
void draw() {
background(255);
// matrix
float padding = 10;
float cellWidth = width / 3;
float cellHeight = height / 2;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
float x = i * cellWidth + padding / 2;
float y = j * cellHeight + padding / 2;
float w = cellWidth - padding;
float h = cellHeight - padding;
stroke(50);
noFill();
rect(x, y, w, h);
}
}
// draw dots
for (Dot d : dots) {
d.display();
}
}
void mousePressed() {
// clicked on existing dot
for (Dot d : dots) {
if (d.isMouseOver()) {
selectedDot = d;
offsetX = mouseX - d.pos.x;
offsetY = mouseY - d.pos.y;
return;
}
}
// new dots
float spacing = 15; // spacing between dots in the 3x3 matrix
float startX = mouseX - spacing;
float startY = mouseY - spacing;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
dots.add(new Dot(startX + i * spacing, startY + j * spacing));
}
}
}
void mouseDragged() {
if (selectedDot != null) {
selectedDot.pos.x = mouseX - offsetX;
selectedDot.pos.y = mouseY - offsetY;
}
}
void mouseReleased() {
selectedDot = null;
}
class Dot {
PVector pos;
float size = 10;
Dot(float x, float y) {
pos = new PVector(x, y);
}
void display() {
fill(0);
noStroke();
ellipse(pos.x, pos.y, size, size);
}
boolean isMouseOver() {
return dist(mouseX, mouseY, pos.x, pos.y) < size / 2;
}
}
