晚上九点,三号楼地下机房。
门是铁制的,很厚,刷着深灰色的防锈漆。
门上挂着一块白底红字的牌子:“计算机房重地,非请勿入。”
陆怀民到的时候,门已经开了。
一个五十多岁的瘦削男人站在门口,他是专门管理这台计算机的副科长徐海,显然是得到了吩咐,提前准备好了。
“你就是陆怀民?”他打量着眼前这个年轻人,目光里带着审视,也带着一丝好奇。
“徐科长好。”
“叫我徐工就行。”他侧身让开路,“进来吧。韩工跟我说了,每天四小时,九点到一点。可以早走但别超时,我一点准时关机,要做保养。”
“规矩都知道了吧?”徐工说着,走到控制台边,翻开一个用铁环装订的登记本:
“进出登记,工作内容简要记录。不能带走任何存储介质,包括你脑子里记的程序流程,出去前要在我这里口头复述并记录关键思路存档。这是保密要求。”
“明白,徐工。”陆怀民点头,在登记本上认真写下自己的姓名、单位、进入时间以及事由。
徐工看了一眼,没说什么,指了指控制台前那把厚重的木椅。
“坐吧。机器已经预热好了,系统在监控状态,按那个红色大按钮,输入‘BASIC’或‘FORTRAN’回车,就能进入编程环境。提醒你一句,”他顿了顿,语气郑重了些:
“这机器金贵,每秒两百万次不假,但内存就512K,编程空间有限。写程序要精炼,调试要小心,别写死循环,万一跑飞了伤机器,你我担待不起。”
“谢谢您的提醒,我会注意的。”陆怀民坐下,手指悬在键盘上方。冰凉的键帽触感让他心神一定。
他按下红色按钮,显示器亮起,出现几行简短的启动信息。
他键入“FORTRAN”,回车。
屏幕刷新,出现了一个简洁的提示符“READY”,和一个闪烁的光标。
这一刻,1979年的国产尖端计算机,向他敞开了最原始也是最核心的交互界面。
没有操作系统桌面,没有图形界面,只有一行行待输入的指令。
陆怀民的手指悬停在键盘上方。
他没有急于输入,而是先闭上了眼睛,在脑海中将过去两天反复推算的流程又快速过了一遍。
坐标定义、矩阵变换、投影计算、绘图循环……
然后,他睁眼,敲下了第一行代码。
接下来的四个小时,是无声的战斗。
第一个晚上,他勉强搭建起了程序的骨架,定义了几个立方体的顶点,并让它们以极其笨拙的方式“旋转”——实际上只是坐标的简单加减,图形在屏幕上扭曲变形,完全看不出立方体的样子。
但陆怀民没有气馁。他知道第一步迈出去了。
第二天晚上,他引入了真正的三维旋转矩阵。投影公式修正了三次,才让图形看起来不那么扁平。
第三天,他加入了第二个、第三个简单几何体,并开始编写判断它们之间最小距离的算法。
内存开始报警,他不得不精打细算,合并数组,优化循环。
一周时间,在每日夜深人静的四小时里飞快流逝。
当陆怀民第七次坐在控制台前时,他面前的程序已经初具雏形。
它可以定义几个基本形状的“零件”,赋予它们粗略的尺寸,将它们按照设定的位置“装配”起来,并通过不断地旋转视图,用高亮线条标出那些靠得太近、可能发生干涉的区域。
计算还很粗糙,精度只到零点一毫米量级,图形全是线框,没有遮挡,没有光影,简陋得如同儿童涂鸦。
但这就是一个雏形。一个能在计算机里,用数字和逻辑,而非纸张和想象,来构建和检验机械结构的雏形。
陆怀民将它命名为“GD-0.1”——“几何设计-初版”。
按陆怀民后世的眼光来看,它的难度和完成度略高于后世计算机系的本科设计。
他一周时间做到这一步,在1979年的环境下,还是相当有天赋的。
但陆怀民知道,这离真正的“辅助设计”还很远。
它更像一个可交互的、能进行粗略空间占位检查的“电子沙盘”,而非设计工具。
“或许……可以先从二维参数化开始?”一个新的想法在他脑中成形。
三维直接交互太难,但可以先在二维剖面上,实现尺寸驱动图形的变化。
这更接近工程师绘图板上的工作模式,也更容易验证。
接下来的一周,陆怀民调整了方向。
他利用GD-0.1的基础图形功能,开始构建一个独立的、更专注于二维平面参数化绘图的模块。
他定义了“点”、“直线”、“圆”、“圆弧”等基本图元,并赋予它们“长度”、“半径”、“角度”、“坐标”等属性。
最关键的一步,他编写了一个简单的“约束解析器”,能够处理“水平”、“垂直”、“相切”、“距离等于”、“点在线上”等最基本的几何约束,并允许将某个尺寸(如一个圆的半径,或两条平行线的间距)定义为“驱动参数”。
这个过程同样艰难。
内存限制逼得他将数据结构和算法精简到极致。
又是一个周三的深夜,程序有了突破性进展。
陆怀民成功地将一个简单的法兰盘连接件二维剖面图“参数化”了。
他定义了法兰外径、螺栓孔中心圆直径、孔数、法兰厚度等几个关键参数。
“徐工,您来看看这个。”陆怀民叫住了正在一旁检查磁带机状态的值班员。
徐工走过来,看着屏幕上那个由绿色线条构成的、略显粗糙但结构分明的法兰图形。
“这是个法兰盘剖面,对吧?”徐工是老师傅,一眼就认了出来。
“对。您看这儿,”陆怀民指着屏幕侧边显示的几行参数,“这是它的几个主要尺寸。现在……”
他双手放在键盘上,谨慎地输入修改命令,将“孔数=4”改为了“孔数=8”,然后按下了执行键。
屏幕上的图形闪烁了一下,然后,在徐工惊讶的目光中,图形开始了“自动”更新:
原有的四个螺栓孔之间,精准地插入了四个新的圆孔,均匀地分布在新计算出的螺栓孔中心圆上。
与孔位相关的中心圆标注线也自动延长,旁边的尺寸标注数字从“4-Φ13”刷新为“8-Φ13”。
整个图形看起来,就像被一只无形而的手,瞬间按照新的规则重新绘制了一遍。
虽然刷新速度因为大量的重复计算而有些慢,虽然图形依旧是简陋的线框,但那个“自动变化”的过程,清晰无误。
而且远快于手绘。
“这……”徐工凑近屏幕,又看了看旁边桌子上陆怀民手绘的原版图纸,对比了一下:
“它……它自己就改好了?按你新说的孔数?”