computer graphics這一門課算是我比較認真的一門課,
當然這門課不會教你用AutoCAD,也不會教你Maya。
課堂一開始,就一直在教畫直線,有人會說,劃直線不就是給個起點與終點,然後呼叫隔壁老王(API),請他幫你油漆就好了嗎?但是如何內插中間的點,而且中間點會有小數,但是pixel位置都是整數,如果給定一個xy線性方程式,要以畫點的api劃出一條線,是相當容易的。
但問題是,這個api用了多少次浮點運算,使用了多少個浮點數,這非常的重要,因為FPU比整數運算單元慢很多。學到最後,出社會也不要叫我們寫一個畫直線的api。但是卻很深刻地體認到,程式要跑得快,請注意浮點數的使用,數值程式要跑的正確,請注意浮點數的精確度。
再還是畫直線,只是畫的是平滑直線,還要交project,沒有修這門課,我永遠搞不懂,大二時我數學系同學問我,為甚麼WINDOWS95的字都糊糊的,大二的我真的答不出來,還敢號稱是資訊系的。
原因就是向量字型開啟平滑(ANTI-ALIASING)去鋸齒功能,而且當時解析度很低,例如640X480,邊緣捕的灰階點,看起來就像墨水暈開了,這問題後來怎麼解決的,不用解決啦,面板解析度拉高就看不出來了。
回到PROJECT,課本只給了一個錐型的微積分方程式,然後老師跟我們說參數把離直線的垂直距離代進去就得到了灰階值。哭了,用C語言怎麼時做一個積分,而且距離直線的距離都是浮點數,也不能用手算後,讓程式查表,老師也沒教。念過數學系微積分的我,這就是我的責任了,答案就留著明天講吧。
不知道算是運氣好還是不好
我修電腦圖學時的期末報告
就是用AutoCAD畫個東西交
有同學畫3D的10腳IC
有同學畫3D的機車引擎
最後在課堂上交作業
引起一陣驚呼和掌聲雷動的
是一位同學交的作業
他畫的是「3D的總統府」
畫得是栩栩如生,還閉月羞花
平平都只上一學期課
功力怎麼會差這麼多?
後來他說了
是他在隔壁校建築系的同學畫的
海綿大大辛苦了,不過你學到了真才實學,不是嗎?
在我認識了幾位設計學院的朋友後,見識到設計學院是怎麼養成的之後,高職三年,技術學院四年,十多年前我就放棄了數位設計這一塊,就算我學會了所有的外功(UI、功能、甚至於是語法),畫出來的東西就是缺乏美感。
但我們CS也是有CS的內功,就在我分享的30門課內,就如同之前分享的資料庫系統管理一文,沒有內功的資深主管,在資料庫schema設計上犯了明顯的錯誤。
當然這些內功也不是說出社會後就無法再成長,只是有比在學校六年可以更專心的學習環境嗎?