
JMP propose des thèmes de couleurs pour de nombreuses applications. Jet est l'un des thèmes chromatiques continus. Ce n'est pas le bon choix pour la hauteur dans le graphique ci-dessus, car Jet tente d'utiliser toutes les couleurs plutôt que d'assigner les couleurs de bas en haut (un schéma de la section Séquentiel pourrait être plus efficace). L'aspect est esthétique, mais les valeurs les plus petites et les plus grandes sont assez sombres.
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.Vous pouvez trouver ces thèmes dans Préférences (ctrl-K) -> Graphiques, cliquez sur les thèmes pour les modifier.
J'ai choisi Jet pour cette vidéo car il formait une ligne brillante au centre de l'échelle.
Zoomed 5X to see the sharp transition.Zoomed 5X to see the sharp transition.Zoomé 5X pour voir la transition nette.
Voici le JSL. Il utilise simplement une moyenne de 9 pixels pour obtenir la couleur suivante ; le résultat final est de privilégier des lignes plus droites entre les régions.
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
)
)
)
);
);
J'ai arrêté la boucle JSL après environ 28 000 images ; c'est assez long et le taux de changement était trop faible pour être intéressant, même avec l'augmentation de la taille des pas.
Automates cellulaires dans JMP ! Très bien.