Skip to content

U0412 Parameter ändern - Teil 2

Verändern Sie zwei selbst gewählte grafische oder geometrische Elemente, die Sie in einem 4x4 cm (oder 180 px) Kästchen plazieren, in fünf Schritten parametrisch von links nach rechts und in fünf Schritten von oben nach unten. Die zwei Elemente agieren zeitgleich und sind in fünf Schritten nach rechts mit Parameter 1 zu verändern und in fünf Schritten nach unten mit Parameter 2 zu verändern. In der Folge werden sie nach rechts-unten mit Parameter 1 und 2 in Kombination verändert. Sie Parameter legen die selbst fest.

Lernziel: Abstraktionsvermögen, (geo-)metrisches Gefühl, Genauigkeit/Präzision

Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung Verschiebung

Reflexion:

Leider ist nach Bild 13 dieser Serie mein Rechner abgestürzt und die Veränderung der Parameter war nicht gespeichert. Ich versuche sie zu rekonstruieren, aber Abweichungen werden nicht vermeidbar sein.

Den Y Parameter habe ich mit zufällig gestaltet, mit der Verschiebung als Quotient der vorherigen Y-Position und einem random Wert zwischen 0.1 und 3. Wie für U0411 gilt: ich weiß nicht ganz, was diese Aufgabe sollte und noch nicht einmal, nach welchen Kriterien ich Zufriedenheit mit der Erfüllung bewerten sollte.

Code:


// --- Einstellungen ---

int cols = 1;

int rows =1;

float padding = 0;

float pointSize = 40;

float param = 2.3;




// Berechnete Werte

float cellSize;

float startX, startY;

float posX = 5;

float posY = 5;



ArrayList<Dot> dots;



void setup() {

  size(180, 180);

  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 (random): " + pointSize, 10, height - 10);

}



void mousePressed() {

  // Punkt an Klickposition hinzufügen

  //for (int i=0; i<3; i++){dots.add(new Dot(random(10, 990), random(10, 990), random(0,1000)));   }

  dots.add(new Dot(posX, posY, pointSize));

}



void keyPressed() {

  if (key == '+' || key == '=') {

    pointSize += 10;

    if (pointSize > 1000) pointSize = 1000;

  }

 if (key == '\t') {
   dots.clear();
   posY = posY + posY/random(0.1, 3);
   posX = posX + posX/param;
   dots.add(new Dot(posX, posY, pointSize));
  }

 if (key == '\b') {
   dots.clear();
   posY = posY + posY/random(0.1, 3);
   dots.add(new Dot(posX, posY, pointSize));
  }

if (key == '\n') {
   dots.clear();
   posX = posX + posX/param;
   dots.add(new Dot(posX, posY, pointSize));
  }
  if (key == '-' || key == '_') {

    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();
    float a = pos.x + (size/3);
    float ay = pos.y ;
    float b = pos.x - (size/3);
    float by = pos.y - (size/3);  
    float c = pos.x + (size/3);
    float cy = pos.y + (size/3);
    triangle(a, ay, b, by, c, cy);

   square(pos.x + size/3, pos.y + size/3,  size/3);

  }

}