與樹共舞:分形舞蹈可視化
來自專欄複雜性科學6 人贊了文章
導語
通過舞蹈的形式,探索分形的可視化問題。
編譯:集智俱樂部翻譯組來源:http://wired.com
原題:How to Dance with a Tree: Visualizing Fractals With Dance
與樹共舞
去年10月底,我走在回家的路上,道路兩旁光禿禿的樹枝在風中搖曳,我懶洋洋地看著那些樹枝,一個想法突然出現在了我的腦海中。出於某種原因,我突然想知道當一晚上的樹是怎樣的體驗——想像著舉起你的雙臂,像樹一樣,揮動它的樹枝。之後,我想起在Daniel Shiffman的《 Nature of Code》中,看到過關於分形的內容。有一些結構,當你持續地放大它們,它們看起來依然和原始的結構很相似,這種奇妙而錯綜複雜的結構,就是分形。作為分形界最早的探索者之一,Benoit B. Mandelbrot創造了分形這個詞,並把它描述城一種「整體縮小版」的幾何圖形。(分形界的一個小幽默:Benoit B. Mandelbrot中的B代表什麼?Benoit B. Mandelbrot。)每一個部分都和整體相似,這種「自相似性」就是分形的核心思想。想想看地圖上的海岸線,在不同的縮放級別上,它們總會呈現出相似的脈絡,山脈的鋸齒狀地形也是如此。或者我們來想像下,閃電向下傳播到地面時,所經歷的分支路徑。或者蕨類植物中葉子的嵌套排列。
再或者是Romanesco西蘭花頭上的花蕾。每個芽上都有較小的芽,這些芽以相同的螺旋形排列在一起。
從海岸線到西蘭花,從閃電到樹木,自然界中的許多模式(patterns)都可以用分形來描述,而不是通常的線條,圓形和三角形等形狀。(在現實世界中,物體只能是大致分形的,到了某種尺度,分形將會結束。但在數學中,分形的自相似性將永遠存在。)
雖然圓形和三角形等形狀是簡約的本質,但另一方面,分形在它們的無線微分中包含著一種有機的複雜性。就像山峰和三角形之間有著天壤之別,分形卻可以很好地表示山峰。這又讓我的思緒回到了樹上,你可以把樹想成分形的樣子。下面是一棵樹的草圖。
仔細看,就像Mandelbort說的那樣,每一個分支都是「整體的縮小版」。
舉個例子,來看看這張圖像。你可能認為你在看著一整棵樹,但實際上,這是一幅向周圍蔓延的樹枝的圖像。(我當時躺在樹下,仰望著它,拍了這張照片。)樹枝們看起來就像一顆小樹,也就是我們想要捕捉到的「自相似性」。
在《Code of Nature》這本書中,Daniel Shiffman實現了用一個簡單的演算法 ,來繪製這樣的分形樹。 為了能自由控制分形的形狀,我對他的代碼做了一點調整,可以通過移動滑鼠來修改樹枝的角度,既而生成樹的動畫。你可以去自己玩一下:http://www.princeton.edu/~aatishb/processing/tree_noleaves/
我嘗試添加一些樹葉,使樹變得更漂亮。
可以玩一下這個可互動版本的分形樹:
http://www.princeton.edu/~aatishb/processing/tree_leaves/接下來,為了實現通過自己的身體控制這棵樹,我們需要和Kinect感測器結合起來。在這裡,我調用了Simple-OpenNI庫(我之前發布過關於Kinect hacking的帖子,您可以在那裡了解到Simple-OpenNI是如何工作的),實現這一功能。我的朋友Upasana Roy自願扮演舞者和木偶的角色(見本文頂部的視頻)。瞧,她揮了一下手,就創造了一顆分形樹,手的角度(從臀部測量到的)控制了分形樹中分支的角度。她身體所在的物理空間被映射到了一個抽象的數學空間(在這種情況下,通過改變這棵樹的分支角度,你可以得到數學空間里的整顆分形樹)。
我們就先探索到這裡,但實際上,你可能還有興趣去探索其他虛擬的形狀,物體和空間。
Q&A
- 第一次玩這個遊戲的時候有什麼感受?
一開始很有挫敗感。大部分情況下,我的動作對於分形樹的改變沒有任何效果,但有時候這棵樹又會突然發生一些變化。即使我以一種平滑的方式移動胳膊,分形樹也會發生突變,我感到一頭霧水。
- 玩了一段時間後有什麼感受?
我發現,當我在跳舞的時候,我需要讓胳膊在我周圍的整個空間環繞。但同時,在這種情況下,系統對某些空間的反應,比對空間中其他部分的反應更敏感。比如說,上下移動手臂時分形的變化遠遠超過左右移動手臂的效果。
- 你是如何編排舞蹈的?有什麼困難的地方和好玩的地方嗎?
玩兒了一段時間後,我找到了我的手臂位置和分形設計之間的關係,接著我就可以以一種可預測的方式來移動了。明白這一點後,就是一個關於分形圖案的遊戲了,音樂是其中好玩的部分!最難的地方在於要一直舉著手臂!
我在空氣中不斷地移動著我的手,但我並沒有看到我所做的動作,而是由我的動作衍生出的變形版本,這讓我覺得自己有點像一個高科技的木偶操作者。在空氣中用抽象的手部運動來控制樹的形狀,實在是太酷了!參考資料:
- 在Max Rheiner(編寫的OpenNI庫,可以讓你在Processing中運用Kinect感測器)和Dan Shiffman(編寫了遞歸樹代碼) 代碼的基礎上,進行了修改,得到了本文的可視化處理代碼,您可以到後附網址獲取:http://www.openprocessing.org/sketch/174694
- Dan Shiffman的著作《Nature of Code》中的分形章節。
- Greg Borenstein的帖子Making Things See是一篇關於如何在Processing中使用Kinect的非常方便的指南。
- 我之前的一篇文章,介紹了如何使用Kinect製作舞蹈視頻:https://www.wired.com/2014/12/empzeal-fractal-tree/
- 非常感謝Upasana Roy願意跳舞,跳到她再也無法舉起自己的雙臂。
翻譯:尚奇奇
審校:劉培源原文:https://www.wired.com/2014/12/empzeal-fractal-tree/
推薦課程
https://campus.swarma.org/gcou=10419 (二維碼自動識別)
https://campus.swarma.org/gcou=10419推薦閱讀
用 Mathematica 窺探分形規律
分形幾何小實驗分形——故事之外幾何深度學習前沿加入集智,一起複雜!集智QQ群|292641157
商務合作及投稿轉載|swarma@swarma.org◆ ◆ ◆搜索公眾號:集智俱樂部加入「沒有圍牆的研究所」推薦閱讀:
※腹腔鏡逆行膽囊切除與次全膽囊切除治療複雜性膽囊結石的療效觀察
※全球經濟正變得更具複雜性和互聯性
※<<複雜性中的思維>> 作者:克勞斯·邁因策爾[德] 曾國屏 譯6
※最具備人的複雜性格的豬八戒(中)