退火
故事,第 1 部分
午後,十月末的陽光與男孩和他的朋友們一起玩耍。 現在還不可怕。 萬聖節還有幾個小時。
視頻和代碼
該視頻序列展示了在球體周圍均勻放置 3200 個點的模擬退火。 最初,這些點被放置在從北極到南極的雙螺旋中。 我不是在嘗試雙螺旋;我希望有更多的初始傳播,但它仍然有效。 顏色只是為了可視化。 在初始點之後,退火過程開始。 https://en.wikipedia.org/wiki/Annealing_(冶金)描述了一種物理退火過程,其中加熱金屬以鬆弛結晶結構,使原子移動到不同的關係中。 有些材料甚至可能會在十月的陽光下退火。 這裡的 JSL 針對視頻進行了調整,並未針對其他任何內容進行優化……但已經足夠好了。 在退火階段,加熱和冷卻的時間表控制允許點遠離最近的鄰居的程度。 因為極點上有很多點擠在一起,時間表需要讓系統保持一段時間熱度,這樣這些點就有時間遷移出去。 在那種“高溫”下,這些點跳得足夠遠,以至於它們經常會離另一個點的鄰域太遠。 時間表的逐漸冷卻階段讓點穩定下來,移動越來越少。 視頻在他們完全安定下來之前就結束了。
下載 JSL
退火 - YouTube

三角測量
故事,第 2 部分
下午晚些時候,是時候穿上服裝了。還不算太可怕。快到萬聖節了。這個男孩的服裝是睡衣和虎皮的混合體,腿的末端縫著一個薄塑料腳墊,一個帶有鬆緊帶和彩繪鬍鬚的模製面具,還有一條拖在地上的尾巴。非常非常酷。他媽媽在 364 天前在 Woolworths 買了這套衣服。
視頻和代碼
只有五個柏拉圖立體.第六個是 3-D 程序員的幽默。四面體(4 個面)、八面體(8 個面)和二十面體(20 個面)都有三角形面,這個模型有 6396 個面。 第 1 部分解釋瞭如何使用退火將 3200 個點分佈在一個球體周圍。現在的問題是將那組點變成一組不重疊但完全覆蓋球體的三角形。JSL 具有二維三角剖分功能https://community.jmp.com/docs/DOC-6686 .因為這些三角形存在於一個球體上,所以我們需要一個 3-D 算法。我在 Linux 機器上使用 QHULL 程序進行 3-D 三角測量。(起初這個問題似乎很容易處理,我試著拼湊自己的代碼。我錯了。)
(附上文件和腳本。您不需要執行此步驟。您將需要修改文件路徑,可能使用 $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 <Desktop/windowsShare/sphere18.csv
>Desktop/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
ThatsNoMoon - YouTube

我發現這張靜止圖像的深度感非常引人注目。 (最後一分鐘的測試...此腳本使用了一些 JMP 13 功能。JMP 13 現已上市! )
對象
故事,第 3 部分
1959 年 10 月 31 日,下午 6:30。 一個四歲的孩子和他的爸爸一起走在街上,手裡拿著不給糖就搗蛋的袋子,完全不知道發生了什麼。 頭一兩間是他朋友家的,沒什麼大不了的,他來過很多次了。 “走到門口,按鈴,說騙子治療,把袋子拿出來。
然後他們越過邊界. 他不認識這些房子。 第一個沒問題;他爸爸打了聲招呼,然後把男孩送到門口。 “Twiker tweat!”。 他們大笑,把東西丟進包裡。
隔壁房子的門開著,男孩的心開始狂跳。 黑白電視裡的綠野仙踪他不是很懂,但肯定覺得飛天猴子很可怕。 但這更糟。 站在門口,尖尖的帽子,綠臉……多年後他才意識到那是完美的妝容他們可能有一台彩色電視機。
爸爸:“繼續,上台階。 她不會傷害你的。”
男孩:“不不不不”
女巫,咯咯地笑著:“來吧,小男孩……我有糖果給你……”
視頻和代碼
構建此視頻的代碼使用命名空間來表示演員作為對象。 在 Drew 的設計之後,對象的圖案鬆散https://community.jmp.com/docs/DOC-9687 ,並且有幾層子類化。 您可能會發現對象呈現自己的方式有點可怕,有點像會飛的猴子。 當演員們在他們的世界中漫遊時,他們有規則來管理他們的互動。 有兩個“極點”演員的例子;他們的主要目的是排斥來自北極和南極的其他演員(因為我選擇的坐標係不能很好地處理兩極)。 紅色和藍色演員在北極實例化,相互排斥,也被兩極排斥。 這位藍色或傑出的演員具有特殊的才能:螃蟹行走、赤道追踪和東方探索。 與紅色演員不同,藍色演員有手段和動機。 相機將跟隨藍色。 其中大部分比現實更接近樂趣。 氣氛並不像看起來那樣。 太陽離得太近了,並且有無法解釋的天鉤將它們托起。 小動物的身體只是球體,深深地壓在地表裡。 當小動物轉得太快時,它們的腿就會交叉,幾幀後就會解開。
下載 JSL
TessellationDance - YouTube

2018 年 6 月 22 日更新:修復鏈接