Processing Workshop Teil 6 Bewegung und Spiegelung

Spieglein Spieglein
In diesem Beispiel bewegen sich Linien von der Mitte der Screen zum linken Bildrand. Auf der rechten Bildhälfte passiert das genau gleiche, nur spiegelverkehrt – aber trotzdem mit den selben Variablen und Formeln. Der einzige Unterschied ist die if-Bedingung für den Richtungswechsel. der ist für die linke Bildhälfte bei 0 und width/2, für die rechte Bildhälfte bei width/2 und width.

In der setup() Methode werden in einer for-Schleife die Anzahl der Linien N generiert und gleich beim Erstellen über den Parameter side als Linie definiert die sich nach links oder nach rechts bewegen soll. Die Variable side kennt zwei Zustände; true und false. Ich habe definiert, dass eine Bewegung nach link false und eine Bewegung nach rechts true ist. Die Abfrage kann dann einfach if(side) oder if(!side) lauten.

 
class VertLine{
  float xPosLeft;
  float speedLeft;
  boolean side;
  int trans;
  int thickness;
 
  VertLine(float _xPosLeft, float _speedLeft, boolean _side){
    xPosLeft = _xPosLeft;
 
    side = _side;
    speedLeft = _speedLeft;
  }
 
 
  void run(){
    // println(side);
 
    /*
     * Damit das Spiel Links/Rechts erkannt werden kann 
     * Sollen die Linien in der Mitte jeweils jeweils Dicke = 1 und 
     * opacity = 255 und am Rand dick und transparent sein
     */
    if (!side){//Linke hälfte
 
        xPosLeft = xPosLeft + speedLeft;
 
      if(xPosLeft < 0)
        speedLeft =- speedLeft;
 
      if(xPosLeft > width/2)
        speedLeft =- speedLeft;
 
      /*innen dunkel / 255 alpha
       * aussen alpha 20
       * differenz = 235
       */
      float trans = (235/(width/2))*xPosLeft;
 
      stroke(0,0,0,trans);
 
      /*
      * Breite in der Mitte 1
      * aussen 10
      */
      float thickness = (width/2) / (xPosLeft+(width/10));
      strokeWeight(thickness);
      drawShape();
    }
    else{//rechte Hälfte
      xPosLeft = xPosLeft + speedLeft;
 
      if(xPosLeft > width)
        speedLeft =- speedLeft;
 
      if(xPosLeft < width/2)
        speedLeft =- speedLeft;
 
 
      /*innen dunkel / 255 alpha
       * aussen alpha 20
       * differenz = 235
       */
      float trans = width-(235/(width/2))*xPosLeft;
     stroke(0,0,0,trans);
 
      /*
      * Breite in der Mitte 1
      * aussen 10
      */
      float thickness = (width/2) / ((width - xPosLeft)+(width/10));
      strokeWeight(thickness);
      drawShape();
    }
 
  }
 
  void drawShape(){
 
    line(xPosLeft,0,xPosLeft,height);
  }
 
}
22.06.2010 | admin |