異次元的作業

寫程序的時候,侄子宏兒拿著他玩的遊戲來找我:「小叔,這個遊戲是怎麼算出炮彈會落在哪裡的?」

總算不是要我教他玩遊戲了,我長舒一口氣,回答道:「遊戲裡面有物理引擎。」

「是程序嗎?」他又問。

「是的。」

「小叔教我寫吧。」

宏兒上個月才學hello world,怎麼可能會寫物理引擎?為了讓他知難而退,將來不像我一樣做個程序員,我在網上的代碼倉庫里找了一段別人寫的、號稱是「空間物理引擎」的代碼,給宏兒看。

「這麼長呀?」

「當然咯。你以為三五行就能解決問題呀。」

「我從哪裡開始寫呢?」

「你呀,努力學習十年再來寫吧。」我瞎編道,「三年學數學,三年學物理,三年學寫大項目,還有一年學寫文檔——這樣別人才會用你寫的物理引擎。」

「這麼難的嗎?」宏兒聽後失望地走開了。

見打擾我寫程序的宏兒走開了,我倒了一杯茶,一邊雙手捧著溫暖的茶杯喝茶,一邊看著剛才找到的代碼。突然,我發現了一個不對勁的地方:這個物理引擎是四維的!

一開始我還猜測,多出來的一個維度也許是時間,或者有其他的什麼用途。但隨著我更加深入地研究這整個工程的代碼,我發現這多出來的一維只能是空間,也就是說,這個物理引擎處理四維物體的平移、旋轉、碰撞、變形!

這是我第一次看別人寫的代碼看得如此激動,儘管這代碼寫得略顯粗糙,還缺少必要的注釋,但它的功能讓我的內心無法平靜下來,我開始了無盡的猜測。

是別出心裁的遊戲嗎?不,生活在三維世界的人類是不可能體驗到四維空間的,即使在虛擬的遊戲中也不可能,他只會被形體的奇特變換在二維屏幕上的投影所迷惑:他不能理解四維。因此四維的遊戲根本不可能受歡迎。

我還注意到,這個項目的介紹中,只是用平淡無奇的語言描述「這是一個普通的空間物理引擎」,並沒有任何提及「四維」的語句。

難道這個程序是四維智慧生物寫的?在他們那裡,空間默認是四維,所以語言表達時不用特別說明。這個突然萌生的想法讓我剛剛喝下去的茶都變作冷汗出來了,我決定放下我現在寫的項目,一探究竟。

我繼續在大海般廣闊的代碼倉庫中搜尋,希望找到其他四維生物寫的代碼。但由於項目描述中沒有「四維」這個詞語,關鍵詞搜索是無效的,我必須人工篩選。這是相當大的工作量:我必須打開每一個項目,先看懂架構,再找到核心代碼判斷維數。我一口氣看了四十幾個項目,其中一半是三維的,一半是二維的,還有兩個是一維的,但就是沒有跟剛才那個一樣是四維的。

可能是某個無聊的人突發奇想,偶然寫了那個程序來逗我玩吧。抱著這樣的想法,我漸漸失去了繼續搜尋下去的動力。要知道,搜索結果有6108條,哪怕是有十年編程經驗的我一個個看完,頭髮也早就都不見了。

我退回到一開始那個「空間物理引擎」項目,看了看主體部分完成的時間,是50天前,還是很近的。我順手在搜索頁面加了一個時間的限制條件:55天前到45天前,搜索結果馬上下降到540條。

我決定再點開幾個看看。第一個,三維的,第二個,三維的,第三個我一看有些不對勁,很快找到核心部分:明顯是一個四維的物理引擎!

我對比了這兩個項目:主體部分完成時間僅相距一天,完成後都不再有細小的改動,項目描述中都沒有出現「四維」的關鍵詞,實現的功能、建模的類型都相同,但代碼風格有較大差異,不像是互相參考著寫的。

這下我來勁了,打起精神繼續搜尋下去。根據從這兩個樣本中總結出來的特徵,我寫了一個爬蟲進行預篩選。一個閃耀著三維文明智慧、挫敗四維生物陰謀的不眠之夜過去了,我總共發現了九個四維物理引擎項目。它們的任何文字說明都沒有絲毫提及「四維」,好像一個物理引擎寫成四維是理所當然的事情,又好像是在刻意隱藏自己,不讓別人使用關鍵詞搜索輕易找到。而且,它們的主體部分完成時間驚人地相近。

我試圖聯繫項目的作者。我非常謹慎地發送每一條消息,詢問他們寫這個項目的目的。按下發送按鈕時我相當激動,彷彿這個按鈕一點下去,兩個不同維度的文明相互溝通的歷史新紀元就到來了。

到第二天下午,我收到了其中五個人的回復,他們都說這個項目是「計算模擬」課程的大作業,其中一個還告訴我,作業是計算機學院的黃老師布置的。

這時我又有了一個大膽的猜測:這些學生都是不知情的受害者,黃老師是利用他們的程序穿越到四維空間的幕後主謀。總之,黃老師知道四維世界那邊的某些秘密。

然後我以探討問題為由,要到了黃老師的聯繫方式。那位好心的同學甚至告訴了我黃老師有空的時間。時間到了,我拿起手機,激動地撥了號碼。

「您是計算機學院的黃老師嗎?」

「是的,請問找我有什麼事?」

「您是不是教一門『計算模擬』的課程?」

「是的。」

「課程的大作業是什麼呢?」

「寫一個四維的物理引擎呀。具體要求在PPT裡面。」

「四維的?」

「你還沒選我的課是吧?是這樣的,這個項目看起來很難,但只要認真聽課,多思考,還是比較容易完成的。」

「我不是問那個。我想問一下,您布置這個作業的目的是什麼?」

「培養你們建模和編碼的能力。」

「不是——我問的是它對您的作用……」

「對我?那當然是方便我根據作業完成情況給成績了。」

「沒有別的目的嗎?」

「還能有什麼目的?」

他好像已經察覺到我不是學生了。我仍然繼續問道:「寫的程序沒有別的用處?」

他不屑地回答:「學生寫的能用來幹什麼?」

算了,我想,拐彎抹角地問是不會有結果的,不如大膽一點直接戳中要害:「那為什麼一定要寫成四維的?」

反正就算他是四維生物,也不能順著電話線來掐死我,更何況手機是無線的。但是,我問完這最後的問題後,那邊沉默了一陣,我頓時緊張起來,脖子也有些癢。

但他終於還是回答了:

「哼,要是讓他們寫三維的,他們就在網上隨便找一段代碼來應付我。」


推薦閱讀:

bullet引擎中這個四元數代表什麼?

TAG:科幻 | 物理引擎 | 游戏 |