故事,第1部分
午后,十月下旬的阳光与男孩和他的朋友一起玩。 还不可怕。万圣节距离我们数小时。
视频和代码
该视频序列显示了模拟退火,可将3200个点均匀地放置在一个球体上。 最初,将这些点放置在从北极到南极的双螺旋中。 我不是想双重螺旋;我希望更多的初始传播,但是无论如何它都能起作用。 颜色仅用于可视化。 在初始点之后,退火过程开始。 维基百科描述了一种物理退火过程,其中加热金属以放松晶体结构,使原子移动到不同的关系。 某些材料甚至可能在十月的烈日下退火。 这里的JSL已针对视频进行了调整,并未针对其他任何内容进行优化...但是足够好。 在退火阶段,加热和冷却的时间表可以控制允许点从其最近的邻居移开几英寸。 由于两极之间挤满了很多点,因此计划表需要使系统保持一段时间的热度,以便这些点有时间迁移。 在这种“高温”下,这些点跳得足够远,以至于它们经常太远地进入另一个点附近。 日程安排的逐渐冷却阶段使积分下降,移动越来越少。 视频在完全解决之前就结束了。
退火-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<