Histoire, partie 1
En début d'après-midi, le soleil de fin octobre joue avec le garçon et ses amis. Ce n'est pas encore effrayant. Halloween est à des heures.
Vidéo et code
Cette séquence vidéo montre le recuit simulé pour placer uniformément 3200 points autour d'une sphère. Initialement, les points sont placés dans une double spirale du pôle nord au pôle sud. Je n'essayais pas de faire une double spirale; J'espérais un peu plus de diffusion initiale, mais ça marche quand même. Les couleurs sont juste pour la visualisation. Après les points initiaux, le processus de recuit commence. Wikipédia décrit un processus de recuit physique, où le métal est chauffé pour détendre une structure cristallisée, permettant aux atomes de se déplacer dans une relation différente. Certains matériaux pourraient même être recuits dans la chaleur du soleil d'octobre. Le JSL ici est modifié pour la vidéo et n'est pas optimisé pour autre chose ... mais assez bon. Pendant la phase de recuit, un programme de chauffage et de refroidissement contrôle combien les points peuvent s'écarter de leur voisin le plus proche. Parce qu'il y a beaucoup de points regroupés aux pôles, le programme doit garder le système au chaud un peu pour que ces points aient le temps de migrer. À cette «température élevée», les points sautent suffisamment loin pour aller souvent trop loin dans le voisinage d'un autre point. La phase de refroidissement progressif du planning permet aux points de se stabiliser, se déplaçant de moins en moins. La vidéo se termine avant qu'ils ne soient complètement installés.
Recuit - YouTube

nnodes = 3200;
xx = -nnodes * 3 / 2;
nodelocs = J( nnodes, 3, 0 ); // x,y,z point for each node
For( i = 1, i <= nnodes, i++,
f = i / nnodes; // 0..1
z = Cos( f * Pi() ); // top to bottom
r = Sin( f * Pi() ); // radius
x = Sin( 10000 * f ) * r; // 10,000 radians
y = Cos( 10000 * f ) * r; // is way too many. but it works...
nodelocs[i, 1] = x;
nodelocs[i, 2] = y;
nodelocs[i, 3] = z;
);
//nodeobj = scene displaylist(); nodeobj<