← Georg Nees, 1969 Kapitel ④ — Falterschwarm

Dissertation 1969

ALGOL 60

'PROCEDURE' FALTER(A,B,FAKTOR),
'VALUE' A, B, FAKTOR.,
'REAL' A, B, FAKTOR.,
'BEGIN'
   LEER(A,B).,
   LINE(A+25*FAKTOR, B+15*FAKTOR).,
   LINE(A+5*FAKTOR, B+10*FAKTOR).,
   LINE(A,B).,
   LINE(A-25*FAKTOR, B+15*FAKTOR).,
   LINE(A-5*FAKTOR, B+10*FAKTOR).,
   LINE(A,B)
'END' FALTER.,

'BEGIN' 'COMMENT' FALTERSCHWARM.,
'REAL' R, S.,
'INTEGER' I.,
OPEN(0,0).,
JI1.=JS1., JI2.=JS2.,
JA1.=-130., JE1.=130.,
JA2.=-90.,
'FOR' I.=1 'STEP' 1 'UNTIL' 100 'DO'
'BEGIN' P.=J1., R.=J1.,
   S.=ABS(P-R)., JE2.=90-.3*S.,
   FALTER(.5*(P+R), J2, .02*S)
'END'.,
CLOSE
'END' FALTERSCHWARM.,

Diese Seite · Zeichenkern

JavaScript

function FALTER(A, B, F) {
  LEER(A, B);
  LINE(A + 25 * F, B + 15 * F);
  LINE(A + 5 * F,  B + 10 * F);
  LINE(A, B);
  LINE(A - 25 * F, B + 15 * F);
  LINE(A - 5 * F,  B + 10 * F);
  LINE(A, B);
}

const J1 = makeGenerator(JS1); // 1306859721
const J2 = makeGenerator(JS2); // 1485627309

for (let I = 1; I <= 100; I++) {
  const P = J1(-130, 130), R = J1(-130, 130);
  const S = Math.abs(P - R);
  FALTER(0.5 * (P + R), J2(-90, 90 - 0.3 * S), 0.02 * S);
}

Bild 4 setzt die Prozedur FALTER aus der Sprache G1 in den Zufall der Sprache G2. Hundertmal: zwei Aufrufe von J1 liefern die Flügelspitzen-Abszissen P und R; die Spannweite S bestimmt Größe (FAKTOR = .02*S, ein Fünfzigstel, weil der Normalfalter in Bild 1 die Spannweite 50 hat) und die obere Grenze für den Fußpunkt: JE2 = 90 − .3*S, damit die Flügelspitzen nicht über den Blattrand hinausragen. J2 setzt die Fußordinate. Zwei Generatoren, zwei Streugrenzen — so bleibt die Periode unsichtbar, und der Schwarm füllt das Blatt, ohne dass jeder Falter einzeln ausgeschrieben werden müsste. Play lässt die Saaten JS1 und JS2 unabhängig durchlaufen, jede mit eigener, an den Enden neu gewürfelter Geschwindigkeit.

© Werke Georg Nees: Erben Eckhard Nees & Sandra Nees · Website © 2026 Eckhard Nees