JSL, allegato di seguito , è stato leggermente modificato per realizzare questo video. Meglio se visualizzato. Destinato allo schermo intero. Ispirato allo screensaver Substrate .
https://www.youtube.com/watch?v=WP1moAuUKXo
questa è un'immagine tipica del JSL allegato.

Grazie per la rapida risposta. Mi sono divertito molto a generare immagini con diverse curvature e combinazioni di colori.
Grazie! Nella mia eccitazione per pubblicare, sembra che mi sia dimenticato di scrivere commenti!
Questo programma utilizza un elenco JSL denominato stack (che ha un nome errato, ma ignoralo.) Stack contiene un elenco di strade attive. Ogni elemento nello stack è un elenco di
- l'ultima riga,col posizione di un pixel nella strada
- l'ultimo angolo in cui la strada era diretta
- l'angolo delta della strada quando viene disegnato ciascun pixel
C'è anche un veclen, che credo sia sempre .7, vicino a .707.
Il ciclo del driver, verso la fine, chiama la funzione doodle N volte con indici agli N elementi in primo piano nello stack. doodle disegna un pixel per ciascuna di queste strade, quindi sembra che N strade siano state costruite contemporaneamente. Guarda il codice nella parte anteriore del doodle e vedrai il codice che implementa la svolta:
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} );La linea 1 cattura lo stato dell'n-esima strada (istack). La riga 2 calcola una riga e una col per il pixel successivo E un nuovo angolo (per la prossima volta). La riga 3 sta verificando se riga,col è ancora sullo schermo e, in tal caso, la riga 4 aggiorna le informazioni per la strada di ritorno in la pila.
Se stai ancora seguendo la fonte, vedrai un pixel nero impostato su riga, colonna o, se fuori dallo schermo, vedrai l'elemento dello stack rimosso... che creerà una nuova strada, più in basso nello stack, inizia a disegnare la prossima volta.
Vedrai anche il codice che genera nuove strade ad angolo retto (aggiungendo +/- pi/2 all'angolo corrente) e il codice che spruzza anche la sabbia leggermente colorata ad angolo retto.
Il codice che genera una nuova strada
// 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});è la risposta alla tua domanda: la normale casuale genera un angolo delta molto vicino allo zero, la maggior parte delle volte. Rendi il .0001 leggermente più grande e più linee avranno più curvatura.
Grazie per aver sconcertato il codice e chiedi di nuovo se i commenti mancanti sono un problema.
Ottima sceneggiatura! Non vedo dove nel codice vengono generate le linee curve. C'è un modo per generare più curve?
Sono nuovo in JSL.
Grazie.
Grazie! Stavo pensando a uno scroller costruito con bitmap trasparenti.
Wow Craige, hai appena trasformato JMP in uno screensaver. Qual è il prossimo passo: tostapane volanti ?