
JMP offre temi colore per molteplici scopi. Jet è uno dei temi cromatici continui. Non è la scelta giusta per Height nel grafico sopra, perché Jet cerca di utilizzare tutti i colori anziché cercare di assegnare i colori in modo da passare da un basso ad un alto (uno schema della sezione Sequenziale potrebbe funzionare meglio). Ha un aspetto gradevole, ma i valori più piccoli e più grandi sono piuttosto scuri.
You can find these themes in Prefs (ctrl-K) -> Graphs, click on the themes to change them.You can find these themes in Prefs (ctrl-K) -> Graphs, click on the themes to change them.Puoi trovare questi temi in Preferenze (ctrl-K) -> Grafici, clicca sui temi per cambiarli.
Ho scelto Jet per questo video perché crea una linea luminosa al centro della bilancia.
Zoomed 5X to see the sharp transition.Zoomed 5X to see the sharp transition.Ingrandisci 5 volte per vedere la netta transizione.
Ecco il JSL. Utilizza semplicemente una media di 9 pixel per ottenere il colore successivo; il risultato finale è quello di preferire linee più dritte tra le regioni.
nr = 1080 + 16; // the 16 border is trimmed when the video is made in blender
nc = 1920 + 16; // because the flicker from blue to red to blue is distracting
board = J( nr, nc, Random Uniform( -1, 1 ) ); // only the initial bitmap is random
ww = New Window( "view", img = New Image( Heat Color( (board + 1) / 2, <<"jet" ) ) );
// jet produces the colors from 0 to 1, our bitmap is -1 to 1
dir = "$desktop/heatpic/"; // keep pictures for blender to make into a video
ipic = 1000000; // the picture name is all numeric with a leading 1
For( i = 1, i < 100000, i += 1,
img << setpixels( Heat Color( (board + 1) / 2, <<"jet" ) );
Show( i, i / 100000 );
ww << inval << updatewindow;
Wait( .0 );
img << Save Image( dir || Char( ipic += 1 ) || ".jpg", "jpg" );
background = If( Sum( board ) > 0, -1, 1 ); // keep the red/blue ratio balanced with the border color
step = Ceiling( i / 10000 ) + 3; // speed up the animation towards the end
For( jstep = 1, jstep <= step, jstep += 1,
Parallel Assign(
{
p = .95, // slight extra push away from 0 -- .1^.95 -> .11
L = .999, // regions close to 1 or -1 flip
z = 2.35, // flip value; more than this is unstable
// add padding with background color
prev = J( nr + 2, 1, background ) || (J( 1, nc, background ) |/ board |/ J( 1, nc, background )) || J( nr + 2, 1, background )
},
board[r, c] = (
x = prev[r :: r + 2, c :: c + 2] ; // depends on padding
v = Sum( x ) / 9 ; // each pixel is the average of the 9 pixel square
If( // but...
v < -L, z, // full negative flips to positive
v < 0, -(-v) ^ p, // tweak the average with
v < L, v ^ p, // a push away from zero
-z // full positive flips to negative
)
)
)
);
);
Ho interrotto il ciclo JSL dopo circa 28K frame; è abbastanza lungo e la velocità di cambiamento era troppo bassa per essere interessante, anche con l'aumento della dimensione del passo.
Automi cellulari in JMP! Molto bello.