Animierte Archimedesspirale in Processing

Archimedesspirale

Spirale

Max kam mit diesem Code in Pascal und es tauchte sofort die Frage auf, ob sich der Code auch in andere Sprachen übersetzen lässt. Am ehesten in Frage kam dafür Processing, eine Entwicklungsumgebung speziell für visuelles Design, die ich bei meinen Arduino-Projekten kennengelernt habe.
Hier der Processing-Code dazu:

 

/*
Animated archimedean spiral
Translated from Pascal into processing by Silvia Rothen, Switzerland
*/

int myHeight = 700;
int myWidth = 700;
int cx = 0;
int cy = 0;
float FValueA = 3.0;
float FValueB = 1.4;
float angle = 0.0;
float x1 = 0.0;
float x2 = 0.0;
float y1 = 0.0;
float y2 = 0.0;
int myDelay = 25;
int lastTime = 0;
boolean odd = false;
int refresh = 0;
boolean continued = true;


void setup() {
  size(myWidth, myHeight);
  strokeWeight(3);
  fill(255, 255, 255);
  stroke(255, 255, 255, 5);
  background(0, 0, 0);
  cx = myWidth / 2;
  cy = myHeight / 2;
  frameRate(1000/myDelay);
}

/* toggle drawing with left mouse button 
   restart drawing with right mouse button
*/
void mousePressed() {
  if ( mouseButton == LEFT) {
    continued = !continued;
  }
  if ( mouseButton == RIGHT) {
    FValueB = 1.4;
    background(0, 0, 255);
    stroke(255);
    x1 = 0.0;
    x2 = 0.0;
    y1 = 0.0;
    y2 = 0.0;
    continued = true;
  } 
}


void draw() {
  if (continued) {
    FValueB = FValueB + 0.001;
    refresh = refresh + 1;
    background(0, 0, 204);
  
    stroke(255, 255, 0);
    for (int i = 42; i >= 0; i = i-1) {
      angle = FValueB * i;
      x2 = cx + (FValueA + FValueB * angle) * cos(angle);
      y2 = cy + (FValueA + FValueB * angle) * sin(angle);
      if (i == 42) {
        x1 = x2;
        y1 = y2;
      } else {
        line(x1,y1,x2,y2);
        x1 = x2;
        y1 = y2;
      }
    }
  }
}

Und hier sieht man die Animation live (vorausgesetzt, man kann Java-Applets im Browser laufen lassen):

Sie ist das erste publizierte Skript in meinem Processing-Benutzerprofil. Mit einem Mausklick links friert man die Animation ein und mit einem Mausklick rechts beginnt man wieder von vorne. Herzlichen Dank an Max und seine maXbox, er hat mich auf dieses Skript aufmerksam gemacht.

Comments are closed.