Skip to content

U0207 Punktübung in drei Schritten

Drei Serien mit drei quadratischen Grundflächen (Schritten) pro Zeile (3x3 Matrix).

  1. Gleich große Punkte, Anzahl zunehmend, kein Anschnitt.
  2. Zwei Punktgrößen, Anzahl zunehmend, kein Anschnitt.
  3. Drei Punktgrößen, Anzahl zunehmend, kein Anschnitt.

Welche neuen Fragen ergeben sich? Dokumentieren sie ihr Ergebnis in MKDocs.

Punkte

Reflexion:

Es ergeben sich keine neuen Fragen.

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

  }

}