首圖來源:bencbartlett 的 Why Github 帳號

美國一名物理學博士候選人 Ben Bartlett 和男友交往 8 年後,日前決定求婚,而這個求婚手法「非常理工」:利用經過設計的六角形 3D 列印鏡子,透過海邊夕陽光線在沙灘上反射出「MARRY ME?」(跟我結婚好嗎?)的字樣,最後也成功讓另一半點頭答應。

這名物理學博士來自史丹佛大學,透過所學的物理學知識,自行設計出特殊六角形鏡子,並讓這些鏡子發揮有如投影機的功能,在海邊夕陽的照射下,各自反射出一個光點。

Ben Bartlett 再利用 Python 程式碼,精密計算出鏡子適宜大小、所需的傾斜角度,最後再經由 3D 列印將 169 塊鏡子化為實體,接著仔細計算求婚時夕陽光線的摺線角度與時間,才完美折射出「MARRY ME?」的字樣。

「天照地射」求婚法背後程式碼大公開

而這個超浪漫求婚方法,其實你也可以辦到!Ben Bartlett 已經在 Why Github?網站上公開了製作流程,名稱就是非常樸實的「3D printed mirror array」,他在這上頭清楚寫明了「天照地射」求婚法所需材料(如下)。

你需要準備的有:

  • Python 3 以及 Jupyter(函式庫:NumPy、matplotlib、 numpy-stl、hexy、VPython)
  • 一台 3D 列印機(Ben Bartlett 購買的是 Creality Ender 3 v2)。你可能還需要髮膠或 3D 列印黏合劑來防止印出來的鏡子變形。
  • 3D 列印線材。(Amazon 傳送門
  • 1 英吋的六角形鏡面磚。(Amazon 傳送門

當事鏡子。

  • 超級膠水(Amazon 傳送門)這類的膠水(cyanoacrylate glue)不會在固化時膨脹,這很重要,因為若是膨脹就會弄亂鏡面角度,所以一定要選擇這類膠水固定小鏡子們,但塗太多也是會扭曲角度的,所以要小心。
  • 一顆沒躲在烏雲背後,乖乖出沒的太陽。

Ben Bartlett 也分享了他的一些失敗經驗,例如他就曾用相同方法製作出可以投射愛心圖案的鏡子進行測試,最後雖然成功,但在製作「MARRY ME?」字樣時,卻發現投射出來的字變成了「?EM YRRAM」,先前卻因為愛心是對稱圖案而沒發現這個 bug,所幸,最後他仍在時間內快速修正成功。

這就是為什麼 Ben Bartlett 公開的程式碼還有個可視化功能:Visualization code for debugging(投射出來的圖樣是不是有如預期,這真的超重要啊!)

首圖看起來超棒的對吧?那麼,這份超詳盡的 Python 程式碼 也別錯過了。有興趣動手做做看的讀者,可以前往【這個傳送門】觀看詳細的製作流程囉。