退火
故事,第 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 日更新:修復鏈接