晚上九點,三號樓地下機房。
門是鐵製的,很厚,刷着深灰色的防鏽漆。
門上掛着一塊白底紅字的牌子:“計算機房重地,非請勿入。”
陸懷民到的時候,門已經開了。
一個五十多歲的瘦削男人站在門口,他是專門管理這臺計算機的副科長徐海,顯然是得到了吩咐,提前準備好了。
“你就是陸懷民?”他打量着眼前這個年輕人,目光裏帶着審視,也帶着一絲好奇。
“徐科長好。”
“叫我徐工就行。”他側身讓開路,“進來吧。韓工跟我說了,每天四小時,九點到一點。可以早走但別超時,我一點準時關機,要做保養。”
“規矩都知道了吧?”徐工說着,走到控制檯邊,翻開一個用鐵環裝訂的登記本:
“進出登記,工作內容簡要記錄。不能帶走任何存儲介質,包括你腦子裏記的程序流程,出去前要在我這裏口頭複述並記錄關鍵思路存檔。這是保密要求。
“明白,徐工。”陸懷民點頭,在登記本上認真寫下自己的姓名、單位、進入時間以及事由。
徐工看了一眼,沒說什麼,指了指控制檯前那把厚重的木椅。
“坐吧。機器已經預熱好了,系統在監控狀態,按那個紅色大按鈕,輸入'BASIC'或'FORTRAN’回車,就能進入編程環境。提醒你一句,”他頓了頓,語氣鄭重了些:
“這機器金貴,每秒兩百萬次不假,但內存就512K,編程空間有限。寫程序要精煉,調試要小心,別寫死循環,萬一跑飛了傷機器,你我擔待不起。’
“謝謝您的提醒,我會注意的。”陸懷民坐下,手指懸在鍵盤上方。冰涼的鍵帽觸感讓他心神一定。
他按下紅色按鈕,顯示器亮起,出現幾行簡短的啓動信息。
他鍵入“FORTRAN”,回車。
屏幕刷新,出現了一個簡潔的提示符“READY”,和一個閃爍的光標。
這一刻,1979年的國產尖端計算機,向他敞開了最原始也是最核心的交互界面。
沒有操作系統桌面,沒有圖形界面,只有一行行輸入的指令。
陸懷民的手指懸停在鍵盤上方。
他沒有急於輸入,而是先閉上了眼睛,在腦海中將過去兩天反覆推算的流程又快速過了一遍。
座標定義、矩陣變換、投影計算、繪圖循環......
然後,他睜眼,敲下了第一行代碼。
接下來的四個小時,是無聲的戰鬥。
第一個晚上,他勉強搭建起了程序的骨架,定義了幾個立方體的頂點,並讓它們以極其笨拙的方式“旋轉”——實際上只是座標的簡單加減,圖形在屏幕上扭曲變形,完全看不出立方體的樣子。
但陸懷民沒有氣餒。他知道第一步邁出去了。
第二天晚上,他引入了真正的三維旋轉矩陣。投影公式修正了三次,才讓圖形看起來不那麼扁平。
第三天,他加入了第二個,第三個簡單幾何體,並開始編寫判斷它們之間最小距離的算法。
內存開始報警,他不得不精打細算,合併數組,優化循環。
一週時間,在每日夜深人靜的四小時裏飛快流逝。
當陸懷民第七次坐在控制檯前時,他面前的程序已經初具雛形。
它可以定義幾個基本形狀的“零件”,賦予它們粗略的尺寸,將它們按照設定的位置“裝配”起來,並通過不斷地旋轉視圖,用高亮線條標出那些靠得太近,可能發生幹涉的區域。
計算還很粗糙,精度只到零點一毫米量級,圖形全是線框,沒有遮擋,沒有光影,簡陋得如同兒童塗鴉。
但這就是一個雛形。一個能在計算機裏,用數字和邏輯,而非紙張和想象,來構建和檢驗機械結構的雛形。
陸懷民將它命名爲“GD-0.1”————“幾何設計-初版”。
按陸懷民後世的眼光來看,它的難度和完成度略高於後世計算機系的本科設計。
他一週時間做到這一步,在1979年的環境下,還是相當有天賦的。
但陸懷民知道,這離真正的“輔助設計”還很遠。
它更像一個可交互的,能進行粗略空間佔位檢查的“電子沙盤”,而非設計工具。
“或許......可以先從二維參數化開始?”一個新的想法在他腦中成形。
三維直接交互太難,但可以先在二維剖面上,實現尺寸驅動圖形的變化。
這更接近工程師繪圖板上的工作模式,也更容易驗證。
接下來的一週,陸懷民調整了方向。
他利用GD-0.1的基礎圖形功能,開始構建一個獨立的、更專注於二維平面參數化繪圖的模塊。
他定義了“點”、“直線”、“圓”、“圓弧”等基本圖元,並賦予它們“長度”、“半徑”、“角度”、“座標”等屬性。
最關鍵的一步,他編寫了一個簡單的“約束解析器”,能夠處理“水平”、“垂直”、“相切”、“距離等於”、“點在線上”等最基本的幾何約束,並允許將某個尺寸(如一個圓的半徑,或兩條平行線的間距)定義爲“驅動參數”。
這個過程同樣艱難。
內存限制逼得他將數據結構和算法精簡到極致。
又是一個週三的深夜,程序有了突破性進展。
陸懷民成功地將一個簡單的法蘭盤連接件二維剖面圖“參數化”了。
他定義了法蘭外徑、螺栓孔中心圓直徑、孔數、法蘭厚度等幾個關鍵參數。
“徐工,您來看看這個。”陸懷民叫住了正在一旁檢查磁帶機狀態的值班員。
徐工走過來,看着屏幕上那個由綠色線條構成的,略顯粗糙但結構分明的法蘭圖形。
“這是個法蘭盤剖面,對吧?”徐工是老師傅,一眼就認了出來。
“對。您看這兒,”陸懷民指着屏幕側邊顯示的幾行參數,“這是它的幾個主要尺寸。現在......”
他雙手放在鍵盤上,謹慎地輸入修改命令,將“孔數=4”改爲了“孔數=8”,然後按下了執行鍵。
屏幕上的圖形閃爍了一下,然後,在徐工驚訝的目光中,圖形開始了“自動”更新:
原有的四個螺栓孔之間,精準地插入了四個新的圓孔,均勻地分佈在新計算出的螺栓孔中心圓上。
與孔位相關的中心圓標註線也自動延長,旁邊的尺寸標註數字從“4-13”刷新爲“8-13”。
整個圖形看起來,就像被一隻無形而的手,瞬間按照新的規則重新繪製了一遍。
雖然刷新速度因爲大量的重複計算而有些慢,雖然圖形依舊是簡陋的線框,但那個“自動變化”的過程,清晰無誤。
而且遠快於手繪。
“這……………”徐工湊近屏幕,又看了看旁邊桌子上陸懷民手繪的原版圖紙,對比了一下:
“它......它自己就好了?你說的孔數?”
“可以這麼理解。”
“這比手繪快多了!”徐海露出驚訝的神色。
“現在還不快,因爲硬件限制。”陸懷民解釋:
“但原理對了。將來計算機快了,內存大了,就能畫複雜的圖,甚至三維模型。
他調出參數化設計的部分代碼:
“你看這裏,定義了一個軸類零件的參數:直徑、長度、鍵槽尺寸、倒角尺寸......改一個參數,整個零件圖自動更新。”
他演示:把直徑從30改成40,屏幕上的軸立即變粗了。
“厲害啊!”徐海驚歎。
在徐海的認知中,計算機通常用於複雜數學運算,他還是第一次見識到計算機居然還能用於繪圖和設計。
如果以後能普及開來,這能提高多少效率?
陸懷民保存了程序,命名爲“GD-P1”(幾何設計-參數化第一版)。
這個系統的複雜度,大約相當於後世研究生階段的課程設計,但從零到一的每一步,都依賴於創造者將工程問題完美抽象,並克服重重問題的能力。
因爲現在可不像後世有許多開源代碼可以參考。
這種能力,換言之,叫創新能力。
幾天後,一份電報從省國防工辦發到了八二七廠。
七月初,山裏的天悶得像個蒸籠。
午後的技術科會議室,吊扇“嗡嗡”地轉着,卻攬不動一絲涼風。
沈一鳴坐在靠窗的位置,襯衫的領口解開了兩顆釦子,手裏拿着那份剛由廠部通訊員送來的電報,反反覆覆看了三遍。
電報是省國防工辦發來的,用的是明碼,但措辭簡短而明確:
“八二七廠:
你廠六月二十一日關於計算機輔助設計技術攻關的請示收悉。經研究,答覆如下:
一、同意你廠在確保‘六○一’項目主進度前提下,開展計算機輔助設計技術探索。
二、你廠提出的技術支援請求,已協調落實。經瞭解,科學院計算研究所設有計算機圖形學研究組,其負責人趙遠航(副研究員)同志,是國內最早從事該領域研究的學者之一。
三、已與趙遠航同志取得聯繫。他願意參與該項目的攻關,他和研究生共二人,預計七月五日抵廠。接待事宜,你廠妥爲安排。
四、此項探索意義重大。若取得突破,請及時上報。
皖省國防工業辦公室
一九七九年七月三日”
沈一鳴把電報輕輕放在桌上,摘下眼鏡,用拇指揉了揉眉心。
電報是昨天下午到的,今天早上才由機要通訊員送到他手裏。他抬起頭,看向坐在對面的韓維義。
“老韓,人明天就到。”
韓維義點點頭,臉上沒什麼意外的表情,反而有種“終於來了”的釋然。
隨電報發來的還有一份簡歷。
韓維義拿起簡單看了看。
趙遠航,科學院計算所副研究員,三十八歲,六六年清華畢業,學的是計算數學,畢業後直接分到計算所。
七零年評上副研究員,搞了十幾年計算機圖形學,在國內算是這個方向最早的一批人。
“圖形學?”韓維義對這個詞有些陌生。
“就是研究怎麼讓計算機顯示圖形、處理圖像的。”沈一鳴解釋道,“咱們現在用的這臺DJS-183,能畫簡單的點和線,靠的就是他們那幫人早些年打下的底子。不過——”
他頓了頓,語氣裏多了幾分感慨:
“不過這個方向,在國內一直不太受重視。計算機所那邊,主要精力都放在大型科學計算、操作系統、編譯系統這些硬”活上。圖形學在工程上應用目前極少......很多人覺得是花架子”,是“不務正業”。趙遠航在計算所待了十
幾年,應該一直坐冷板凳,沒出過什麼大成果,副研究員評了十年了,也沒見動。”
韓維義沉默了一會兒,點了點頭:
“能理解。國家現在最缺的是能算原子彈、算導彈軌跡的計算機,是能提高生產效率的自動控制系統。畫圖......確實顯得沒那麼急。”
“可咱們現在就需要這個。”沈一鳴說:
“懷民這兩天做了一套程序,思路是對的,但缺了最關鍵的圖形處理技術。線框圖只能看個大概,真正的三維設計,得能分前後,能看遮擋,能算陰影。這些,咱們一竅不通。趙遠航他們來了,正好補上這塊短板。”
“當然,解決這次的問題是次要的。若是後續能在這次項目的基礎上,做出一個功能完整的CAD系統,這纔是大成果。”
韓維義點點頭。
他雖然投身生產一線多年,也知道科研上的突破其實是可遇不可求。
七月五日,下午兩點。
一輛軍綠色的吉普車駛入八二七廠大門,在技術辦公樓前緩緩停下。
車門打開,先下來的是個三十七八歲的男人。
個子不高,瘦削,穿着一件白色短袖襯衫,袖子挽到肘部,露出精瘦的小臂。
鼻樑上架着一副黑框眼鏡,鏡片很厚,鏡框有些舊了,但很有學者的氣質。
他拎着一個黑色人造革提包,站在車邊,眯着眼看了看四周的建築,又抬頭望瞭望天。
山裏的陽光很烈,他下意識地抬手擋了擋。
跟在他後面下來的是個二十出頭的年輕人,應該是他的學生,同樣瘦,戴眼鏡,揹着一個鼓鼓囊囊的帆布書包,手裏還抱着一個用報紙裹着的方形物體,看樣子像是一摞書。
韓維義和沈一鳴已經等在樓門口了。見人下車,兩人快步迎了上去。
“是趙遠航同志吧?”韓維義伸出手,“一路辛苦,我是八二七廠總工程師韓維義。這位是科大精密機械系的沈一鳴教授,項目技術總負責人。”
趙遠航伸手握住,他的手心有薄繭,是常年敲鍵盤留下的。
“趙遠航。”他自我介紹得很簡潔,帶着明顯的北方口音,“這是我帶的研一學生,劉明。”
劉明連忙上前,微微躬身:“韓工好,沈教授好。”
寒暄了幾句,韓維義引着兩人往樓裏走。
“趙研究員,住處已經安排好了,在招待所二樓,和沈教授他們一層。條件簡陋,多包涵。”韓維義邊走邊說:
“項目的情況,省國防工辦應該跟您簡單介紹過了。咱們這個項目,時間緊,任務重,您來了,我們心裏就踏實了。”