今天終于把論文敲完了,一路走來,頗多感想。遂寫下以下諸多文字,以饗讀者。
在說這個項目之前,先簡單介紹一下我的經歷。我叫王財勇,家是山西的,2009年至2013年在新疆大學就讀數學專業,也許有人會問,為什么你要去新疆讀書?其實答案很簡單,我高考分不高,所以未能進入理想院校就讀,因此調劑到新大數學系。開始我很失望,本來就調劑,還讀了數學。后來我就不怎么后悔了。盡管新大也是211高校,在新疆也是第一高校,但在內地排名仍然在80左右。但是就是這個排名不高的學校,她的數學專業卻令全國的同行不敢小覷。我們新大的圖論和生物數學領域在業內是很有名的,先后走出了很多知名教授,如廈門大學教授張福基,曾擔任我們的系主任、南開大學組合數學中心副主任李學良教授、美國貝爾實驗室和離散數學與理論計算機科學研究中心博士后研究人員永學榮等,還有一大批的教授在這里仍然講學,更慶幸的我讀書那年,新大正好成立了第一屆全國理科基礎與人才培養基地班。這個班至今全國只有18個院校有,而且可以辦這個班的學校基本都是985,新大能夠辦這種班,也說明了新大的數學真是很強。我在這樣一個很好的環境下開始了我的數學本科學習。
本科學習的生涯是充實的,我的成績也很好,最終大四畢業,我特意打了一下我的成績單,四年的學分績點是3.81,名列榜首,也因此我成功保送到廈門大學攻讀研究生。
在廈大,我的專業是計算數學,導師是曾曉明老師,研究方向是計算機輔助幾何設計與計算機圖形學。由于我在本科學的是應用數學,比較理論化,研究生轉到了計算數學,這就意味著我即將接觸到更多的編程。遺憾的是我之前僅有Matlab與C語言的基礎,而且應該說很淺,現在我更多的是要使用C++。怎么辦呢?沒辦法,只有硬著頭皮去學C++了。我找了一本比較簡單的C++入門書,主要學了一些關于類、繼承、多態性等方面的知識,這時老師就讓我旁聽一門叫《數字幾何處理》的課,那門課讓我收益良多,我開始邁進了計算機圖形學的大門。那門課讓我知道了OpenGL,Openmesh,也讓我看到了圖形學的絢麗與精彩。那門課有是三個大作業,是用C++編寫的,我們要求補充里面的一些程序,我是個C++新手,第一個程序沒做完,也挺著急的,就找別人的看了看,也開始自己去琢磨,終于后面的兩個程序我搞出了。那時感覺挺有成就感,后來我又學了《計算機圖形學教程》、《計算幾何》等專業課,理論基本建立了一些。
為了繼續加強C++的學習,我又利用課余時間與暑假,先后補充了數據結構、算法、C++ STL、Qt、最優化理論等方面的知識,尤其是Qt的學習讓我終于見識了計算機的神奇,我終于可以自己編寫一個小的軟件,設計一個界面,這些讓我倍感興奮。C++ STL是我經常要使用的標準庫,非常好用,里面提供了vector/list/deque/string等數據結構和一些常用的算法如sort等,它的學習為我后來的程序設計帶來了很多方便。于是在這些基本的知識補充地差不多的時候,我開始正式開展項目了。
時間是2014年9月5日,我開始了,這個一直持續到2015年4月15日。期間我得到了老師和師兄的幫助,他們幫助我指明行動的方向,并且介紹了許多經典的庫。庫的威力在C++中是相當強大的,我在項目的實施中,先后調用了Graphite用來計算曲面的曲率、ANN中的kd tree用來求解近似最近鄰、Openmesh用來讀入曲面與處理三角網格、CGAL用來求解三角形與四邊形的求交以及三角形與線段的求交、Qt用來設計界面、libQGLViewer用來處理三維模型的顯示和繪制等,這么多的庫都是我在做項目的過程中學習的,不是可以學的,只是因為有需要,所以才學,這也教了我一種學習的方法就是邊實踐邊學習,這樣的效率最高。就這樣,一路上磕磕絆絆,我都不知道改了多少次,有多少次是晚上11點半回去的,這個項目的實踐讓我看到了研發的辛苦,當然了也帶給我許多的知識和充實。
今天我正式把論文改完了,感受到了一種輕松與興奮,雖然文章的結果與最初的想法不一定完全契合,但結果還是很好的,最后只想對長期以來給我指導的導師和師兄說聲謝謝,他們的幫助讓我感到了團隊的力量,的確,在現今這個時代,沒有什么事是一個人可以搞定的,大家在一起討論、研究甚至爭吵,這些都會讓我們的工作變得更加美好。
結尾附上該項目的主頁鏈接:https://github.com/xiamenwcy/b-spline-knots-setting,敬請指教。