退火
故事,第 1 部分
午后,十月下旬的阳光与男孩和他的朋友们一起玩耍。现在还不可怕。距离万圣节还有几个小时。
视频和代码
该视频序列展示了在球体周围均匀放置 3200 个点的模拟退火。最初,这些点被放置在从北极到南极的双螺旋中。我并不是在尝试双螺旋;而是在尝试双螺旋。我本来希望能有更多的初步传播,但无论如何它还是有效的。颜色仅用于可视化。在初始点之后,退火过程开始。 https://en.wikipedia.org/wiki/Annealing_ (冶金)描述了一种物理退火过程,其中金属被加热以松弛结晶结构,从而使原子进入不同的关系。有些材料甚至可能在十月温暖的阳光下退火。这里的 JSL 针对视频进行了调整,并未针对其他任何内容进行优化……但已经足够好了。在退火阶段,加热和冷却的时间表控制着允许点远离最近邻居的距离。由于两极有很多点拥挤在一起,因此时间表需要让系统保持一段时间的高温,以便这些点有时间迁移走。在那个“高温”下,这些点跳得足够远,以至于它们经常进入另一个点的邻域太远。赛程的逐渐冷却阶段让积分稳定下来,移动越来越少。视频在他们完全安定下来之前就结束了。
下载JSL
退火 - YouTube

三角测量
故事,第 2 部分
下午晚些时候,是时候穿上戏服了。还是不太吓人。快到万圣节了。男孩的服装是睡衣和虎皮的混合体,腿末端缝有薄薄的塑料脚垫,带有松紧带和彩绘胡须的模压面具,还有一条拖在地上的尾巴。非常非常酷。 364 天前,他妈妈在 Woolworths 买了这件衣服。
视频和代码
柏拉图立体只有五种。 第六是3D程序员的幽默。四面体(4 个面)、八面体(8 个面)和二十面体(20 个面)具有三角形面,该模型也有 6396 个面。第 1 部分解释了如何使用退火在球体周围分布 3200 个点。现在的问题是将这组点转换为一组不重叠但完全覆盖球体的三角形。 JSL 具有二维三角测量函数https://community.jmp.com/docs/DOC-6686 。因为这些三角形位于球体上,所以我们需要 3-D 算法。我在 Linux 机器上使用 QHULL 程序来进行 3D 三角测量。 (起初,这个问题似乎很容易处理,我试图将自己的代码拼凑在一起。我错了。)
(文件和脚本已附加。您不需要执行此步骤。您需要修改文件路径,也许使用 $DOWNLOADS。)
从 JMP 数据表构建一个如下所示的文件:
Desktop/windowsShare/sphere18.csv. Hand-edit the first two rows with your favorite editor.
3
3200
0.0174574781 -0.009345855 0.9998039265
0.0370915586 0.1378584254 0.9897571777
-0.016638696 -0.082236389 0.9964739485
0.1316324218 0.1496379046 0.9799394895
-0.076811566 -0.102578513 0.9917548246
-0.124948516 -0.055647123 0.9906014669
-0.164864305 -0.100732341 0.9811588843
0.0174820473 0.0708889403 0.9973310063
...
将其发送到另一台机器并运行以下命令:
grab some software for a linux machine to do a tessellation in N dimensions (N==3 for us)...
sudo apt-get install qhull libqhull-dev qhull-bin
do the tesselation...
qhull Qt i 桌面/windowsShare/sphere18.zerobased.delaunay
并将此文件发送回 JMP:
head Desktop/windowsShare/sphere18.zerobased.delaunay -- show the output of the tessellation
6396 -- number of triangles
1601 1605 1607 -- zero-based row numbers of vertices of first triangle
1802 1800 1804
1800 1613 1804
1798 1613 1800
1424 1611 1418
1611 1424 1619
1814 1812 1631
1629 1814 1631
1603 1597 1406
...
这里的代码是为了制作视频来解释三角测量......虽然我不知道 QHULL 算法实际上是如何工作的。我想我可能必须重新排列三角形的生成顺序,但原始顺序似乎很有趣。还有慢进、慢出功能https://en.wikipedia.org/wiki/12_basic_principles_of_animation#Slow_In_and_Slow_Out接近尾声……缓慢地开始推车,加速,然后减速直至软停止。后缀 18 提示您此代码所经历的迭代次数。它为世界打造了一套漂亮的服装。
下载JSL
那就是没有月亮 - YouTube

我发现这张静态图像的深度感非常引人注目。 (最后一刻测试...该脚本使用了一些 JMP 13 功能。JMP 13 现已可用!)
对象
故事,第 3 部分
1959 年 10 月 31 日,下午 6:30。一个四岁的孩子和他的父亲一起走在街上,手里拿着“不给糖就捣蛋”的袋子,完全不知道发生了什么。前一两所房子是他朋友的家,没什么大不了的,他已经去过很多次了。 “走到门口,按门铃,说骗人的款待,把袋子拿出来。”
然后他们穿越边界。他不认识这些房子。第一个还可以;他的父亲打招呼,然后把男孩送到门口。 “Twiker tweet!”。他们笑了,把东西扔进包里。
隔壁房子的门打开了,男孩的心开始狂跳。他不太了解黑白电视里的绿野仙踪,但他肯定觉得飞猴很可怕。但这更糟糕。站在门口,尖尖的帽子,绿色的脸……多年后他会意识到这是完美的妆容,他们可能有一台彩色电视。
爸爸:“走吧,上台阶。她不会伤害你的。”
男孩:“不啊啊啊”
女巫咯咯笑道:“来吧,小男孩……我给你准备了糖果……”
视频和代码
构建此视频的代码使用命名空间来表示演员作为对象。该物体的图案是根据德鲁的设计而松散的。https://community.jmp.com/docs/DOC-9687,并且有多层子类化。您可能会发现这些对象呈现的方式有点令人恐惧,有点像会飞的猴子。演员们在他们的世界中漫步时有规则来管理他们的互动。 “杆”演员有两个实例:它们的主要目的是排斥来自北极和南极的其他参与者(因为我选择的坐标系不能很好地处理两极)。红色和蓝色演员在北极被实例化,并且相互排斥以及与两极排斥。蓝色或杰出的演员有特殊的才能:螃蟹行走、遵循赤道和寻找东方。与红色演员不同,蓝色演员有手段和动机。相机将跟随蓝色。其中大部分更接近于乐趣而不是现实。气氛并不像看上去的那样。太阳离我们太近了,并且有无法解释的天钩支撑着它们。这些生物的身体只是球体,被深深地压入表面。当小动物转得太快时,它们的腿就会交叉,几帧后就会解开。
下载JSL
TessellationDance - YouTube

2018 年 6 月 22 日更新:修复链接