Skip to content

U0202 Position eines Punktes

Positionieren Sie einen Punkt so, dass folgende Anmutungen entstehen (die Größe des Punktes bleibt gleich):

  • leicht
  • schwer
  • schwebend
  • lastend
  • froh
  • traurig
  • bewegt
  • statisch
  • unruhig
  • ruhig
  • nah
  • fern

Dokumentieren sie ihr Ergebnis in MKDocs.

Punkte

Reflexion:

Die Punkte befinden sich in Reihenfolge von links nach rechts und oben nach unten georden in die Anmutungen von leicht bis fern.

Mit dem Ergebnis bin ich nicht wirklich zufrieden. Ich hatte Schwierigkeiten die Anmutungen in Punkte im Raum zu übersetzen. Ich vermute, dass ein Problem ist, dass ich die Grundfläche genommen habe, statt einem großen Hintergrund. Mit dem Statischen Punkt bin ich eigentlich zufrieden, aber durch die anderen Punkte außen herum, wirkt er nicht richtig. Auch lassen sich die verschiedenen Anmutungen nicht wirklich voneinander unterscheiden. Ich habe versucht Gewicht in Nähe zur Grundlienie zu übersetzen, aber im Resultat wirkt der Punkt für nah schwerer, als der für schwer. Der einzige, mit dem ich wirklich zufrieden bin, ist fern.

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);

  }

}