<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />JSL, im Anhang , ein wenig modifiziert, um dieses Video zu erstellen.Am besten, wenn man es betrachtet.Für den Vollbildmodus gedacht.Inspiriert von Substrat-Bildschirmschoner .
https://www.youtube.com/watch?v=WP1moAuUKXo
Dies ist ein typisches Bild aus der beigefügten JSL.

Vielen Dank für die schnelle Antwort. Es hat mir viel Spaß gemacht, Bilder mit unterschiedlichen Krümmungen und Farbkombinationen zu erstellen.
Danke! In meiner Aufregung, etwas zu posten, scheint es, als hätte ich vergessen, Kommentare zu schreiben!
Dieses Programm verwendet eine JSL-Liste mit dem Namen „Stack“ (der falsche Name hat, aber ignorieren Sie ihn). Stack enthält eine Liste aktiver Straßen. Jedes Element auf dem Stapel ist eine Liste von
- die letzte Zeile, Spalte, Position eines Pixels in der Straße
- der letzte Winkel, in den die Straße führte
- Der Deltawinkel, den die Straße dreht, wenn jedes Pixel gezeichnet wird
Es gibt auch einen Veclen, der meiner Meinung nach immer bei 0,7 liegt, also nahe bei 0,707.
Die Treiberschleife am Ende ruft die Doodle-Funktion N-mal mit Indizes für die N vordersten Elemente im Stapel auf. doodle zeichnet für jede dieser Straßen ein Pixel, sodass es aussieht, als würden N Straßen gleichzeitig gebaut. Schauen Sie sich den Code vorne in doodle an und Sie werden den Code sehen, der den Turn implementiert:
1 {row, col, angle, deltaangle, veclen} = stack[istack];
2 {newrow, newcol, angle} = Eval List( {row + veclen * Sin( angle ), col + veclen * Cos( angle ), angle + deltaangle} );
3 If( newrow >= 1 & newrow <= rowsiz & newcol >= 1 & newcol <= colsiz,
4 stack[istack] = Eval List( {newrow, newcol, angle, deltaangle, veclen} );Zeile 1 erfasst den Zustand der n-ten (Istack-)Straße. Zeile 2 berechnet eine Zeile und eine Spalte für das nächste Pixel UND einen neuen Winkel (für das nächste Mal). Zeile 3 testet, ob die Zeile und die Spalte noch auf dem Bildschirm angezeigt werden. Wenn ja, aktualisiert Zeile 4 die Informationen für die Straße zurück der Stapel.
Wenn Sie immer noch der Quelle folgen, sehen Sie ein schwarzes Pixel in Zeile, Spalte. Wenn Sie sich außerhalb des Bildschirms befinden, sehen Sie, dass das Stapelelement entfernt wurde ... wodurch weiter unten im Stapel eine neue Straße entsteht. Fange das nächste Mal mit dem Zeichnen an.
Sie sehen auch Code, der neue Straßen im rechten Winkel erzeugt (durch Addition von +/- pi/2 zum aktuellen Winkel), und Code, der den hellfarbigen Sand ebenfalls im rechten Winkel versprüht.
Der Code, der eine neue Straße hervorbringt
// new doodle at right angle
stack[N Items( stack ) + 1] = Eval List({newrow, newcol, angle + If( Random Integer( 0, 1 ), Pi() / 2, -Pi() / 2 ), Random Normal( 0, .0001 ), .7});ist die Antwort auf Ihre Frage: Die zufällige Normalität erzeugt meistens einen Delta-Winkel, der sehr nahe bei Null liegt. Wenn Sie den Wert .0001 um eine Nuance vergrößern, erhalten mehr Linien eine stärkere Krümmung.
Vielen Dank, dass Sie über den Code gerätselt haben, und fragen Sie noch einmal, ob die fehlenden Kommentare ein Problem darstellen.
Tolles Drehbuch! Ich sehe nicht, wo im Code gekrümmte Linien erzeugt werden. Gibt es eine Möglichkeit, mehr Kurven zu erzeugen?
Ich bin neu bei JSL.
Danke schön.
Danke!Ich habe über a nachgedacht Scroller mit transparenten Bitmaps erstellt.
Wow Craige, du hast JMP gerade in einen Bildschirmschoner verwandelt. Was kommt als nächstes -- fliegende Toaster ?