偶然在网络上刷到中国科学技术大学刘利刚老师写的“什么是计算机图形学?”,其中除了介绍计算机图形学的基本概念,还介绍了学习计算机图形学需要的基础知识和学习方法,感觉这一部分很有启发,摘录如下:

三、 学习计算机图形学需要哪些基础?

 

计算机图形学是一门与很多学科都交叉的学科方向。因此,要学好计算机图形学和做好计算机图形学方面的研究,除了计算机图形学的基础知识以外,你还需要有其他方面的一些知识。当然你懂得越多当然会越好。

 

1、 数学

计算机图形学进入我国大概在上个世纪70年代末和80年代初,那时国内还没有计算机学科。于是,开始学习和研究计算机图形学的大部分都是搞数学的一些学者和教授。由此可见,计算机图形学是需要数学知识较多的一门计算机应用技术学科,在我国也是应用数学的一个重要分支(国内的很多高校和科研院所的数学专业都有计算机图形学方向)。

计算机图形学里面用到的数学比较多,列举一些常用的,包括:微积分、线性代数、矩阵计算、微分几何、数值计算和分析、计算方法、偏微分方程、微分方程数值解、最优化、概率、统计、计算几何等。

计算机图形学领域的一位优秀学者Greg Turk教授在1997年曾写过一篇“计算机图形学中的数学”(Mathematics for Computer Graphics)的帖子,详细可见:

http://www.cc.gatech.edu/~turk/math_gr.html

其中文翻译版本可见:

http://staff.ustc.edu.cn/~lgliu/Resources/CG/Math_for_CG_Turk_CN.htm

笔者在多年从事计算机图形学研究中对数学的体会是:“数学不是没有用,而是不够用!”。对数学的学习和应用将是“活到老,学到老”。重要的是,从以前看似枯燥的数学到看到它的实际应用的过程中,你会更容易享受数学的美妙。在你不断进行计算机图形学的研究的过程中,你会感觉到你的数学知识越来越不够用,从而真正理解其中的数学思想和数学方法。

另一方面,想成为一名计算机图形学的研究者也不必精通各门数学!在大学里,你所学的那些数学看起来都很抽象,枯燥无味,这是因为你并不知道它们的用处,甚至连讲课的老师也不知道,而你们的目的只是记住那些定理和公式,考个好分数。与大学学习数学不一样的是,你在计算机图形学的学习和研究过程中会感受到数学的用处和美妙,这时你学习数学的目的将更加明确,兴趣将更加浓厚,学习方法将更加有效。因为你是在使用数学的过程中在学习数学!想想看你是如何学会中文说话的?以上提到的常用的数学课程你不必都要熟悉,许多研究工作者从不需要考虑其中提到的某些数学知识,成功的研究者总是将某一方面的数学知识和数学工具用到极致!

总之,关于计算机图形学与数学的关系,归纳起来就是以下几个原则:

l  计算机图形学的研究需要用到较多的数学知识,有较好数学功底的学生从事计算机图形学有一定优势;

l  即使没有学太多的数学也不要紧。数学的知识不需要都学会了再去做问题,在解决问题的过程中去学习数学是最快的学习方法。即,研究过程中若遇到什么数学知识再去学相关的知识,学习起来会更有兴趣,掌握起来会更快更扎实;

l  学习数学要结合图形,即“数形结合”,需要有图形的想象能力;数学公式不重要,是“纸老虎”,重要的是背后的思想及其所表达的概念,公式只是它们的一个抽象表达;

l  活到老,学到老。要不断学习新的知识和技术,使自己不断进步和增长功力,才是王道。

 

2、 编程

在计算机图形学中,大部分的想法都要通过实际例子来验证的,再好的理论也要拿实际例子来得到验证和应用。因此,利用编程语言来实现想法或算法是必须要有的能力。C/C++是计算机图形学最常用的编程语言。

笔者要求学生必须掌握C++编程语言和面向对象编程思想,这是大家通用的“语言”。网上的大部分的资源、类库、算法代码基本上都是C++写的,因此,你若需要利用这些资源,必须掌握甚至精通C++语言。

关于计算机图形学所需要的编程能力的几点看法:

l  从事计算机图形学和图像处理的研究需要有较强的编程能力,要对编程有极大的兴趣和热情;

l  如果你对编程比较“感冒”或“厌恶”,则建议你不要选择计算机图形学方向;

l  不太会编程不要紧,任何人都是从不会到会的!只要你对编程有兴趣,觉得编程“好玩”,您完全可以在很短的时间内极大地提高您的编程水平。笔者在长期的教学实验和科研过程中,摸索和发展出一套有效的方法,能够在最短的时间内,帮助学生(包括数学专业的学生)快速提高编程的能力。

 

3、 其他

l  英语基础要好,因为需要大量阅读英文文献和进行英文论文的写作;英文的听说能力也要好些,因为要跟国际学者交流讨论;

l  计算机图形学中的很多算法是真实物理世界的模拟,因此,如果你要进行基于物理的建模和仿真,一些物理知识和理论也需要的,比如力学(动力学,运动学,流体力学)和光学等;

l  其他学科的知识,根据具体研究的需要去学习即可,不必刻意去提前学多少。

刘老师任务学习计算机图形学应当具有一定的数学、编程和英语基础,更重要的是,要有学习的兴趣和动力。我深以为然!我觉得,现在从事计算机相关的工作,都需要数学、编程和英语知识,掌握了这三门技能,对进一步提高工作能力非常有帮助!

 

刘老师还提到了如何做研究,说得也非常好,摘录如下:

 

五、其他问题

 1、  如何选择适合自己的工作(研究方向)?

A: 就两点:兴趣 + 擅长!

兴趣是第一位的,是否擅长需要尝试和不断学习成长!将学会将自己的天赋发挥到极致!

 

2、  自己是否适合学习和从事计算机图形学的研究?

A: 看看自己是否满足以下两个条件:

1)       对计算机图形学或图像处理具有强烈的兴趣和激情;

2)       喜欢算法设计和编程。

若上述两个条件都满足(觉得好玩!),则可以尝试选择计算机图形学作为自己的研究方向。

 

3、  从事研究工作需要哪些品质?

A: 激情、好奇心、努力!

 

4、  为何选择从事研究工作?

A: http://staff.ustc.edu.cn/~lgliu/Resources/ForMyStudents/GCL-WhyResearch.rar

 

5、  如何在研究生期间取得成功?

A: http://staff.ustc.edu.cn/~lgliu/Resources/ForMyStudents/HowToSucceedAtGCL.rar

工作和做研究很多方面都是相通的,都需要兴趣的牵引,都需要投入激情、好奇心和持续的努力,在你擅长的领域中发挥价值,这样才能达到更好的结果。

再次赞一下刘老师的文章!