转自:http://www.cnblogs.com/ufoym/archive/2009/01/21/1379529.html
英文原文《Mathematics for Computer Graphics》:http://www.cc.gatech.edu/~turk/math_gr.html
“学习计算机图形学需要多少的数学?”这是初学者最经常问的问题。答案取决于你想在计算机图形学领域钻研多深。如果仅仅使用周围唾手可得的图形软件,你不需要知道多少数学知识。如果想学习计算机图形学的入门知识,我建议你读一读下面所写的前两章(代数,三角学和线性代数)。如果想成为一名图形学的研究者,那么对数学的学习将是活到老,学到老。
如果你并不特别喜欢数学,是否仍有在计算机图形学领域工作的机会?是的,计算机图形学的确有一些方面不需要考虑太多的数学问题。你不应该因为数学成绩不好而放弃它。不过,如果学习了更多的数学知识,似乎你将在研究课题上有更多的选择余地。
对于在计算机图形学中哪些数学才是重要的还没有明确的答案。这领域里不同的方面要求掌握不同的数学知识,也许兴趣将会决定了你的方向。以下介绍我认为对于计算机图形学有用的数学。别以为想成为一名图形学的研究者就必须精通各门数学!为了对用于图形学的数学有一个全面的看法,我特地列出了很多方面。但是许多研究者从不需要考虑下面提到的数学。
最后,虽然读了这篇文章后,你应该会对数学在计算机图形学中的应用有所了解,不过这些观点完全是我自己的。也许你应该阅读更多的此类文章,或者至少从其他从事计算机图形学工作的人那里了解不同的学习重点。现在开始切入正题。
代数和三角学
对于计算机图形学的初学者来说,高中的代数和三角学可能是最重要的数学。日复一日,我从简单的方程解出一个或更多的根。我时常还要解决类似求一些几何图形边长的简单三角学问题。代数和三角学是计算机图形学的最基础的知识。
那么高中的几何学怎么样呢?可能让人惊讶,不过在多数计算机图形学里,高中的几何学并不经常被用到。原因是许多学校教的几何学实际上是如何建立数学证明的课程。虽然证明题对提高智力显然是有效的,但对于计算机图形学来说,那些与几何课有关的定理和证明并不常被用到。如果你毕业于数学相关领域(包括计算机图形学),就会发现虽然你在证明定理,不过这对开始学习图形学不是必要的。
如果精通代数和三角学,就可以开始读一本计算机图形学的入门书了。下一个重要的用于计算机图形学的数学——线性代数,多数此类书籍至少包含了一个对线性代数的简要介绍。推荐的参考书:
Computer Graphics: Principles and Practice
James Foley, Andries van Dam, Steven Feiner, John Hughes
Addison-Wesley
此书的中文版本:
线性代数
线性代数的思想贯穿于计算机图形学。事实上,只要牵涉到几何数值表示法,就常常抽象出例如x,y,z坐标之类的数值,我们称之为矢量。图形学自始至终离不开矢量和矩阵。用矢量和矩阵来描述旋转,平移,或者缩放是再好不过了。高中和大学都有线性代数的课程。只要想在计算机图形学领域工作,就应该打下坚实的线性代数基础。我刚才提到,许多图形学的书都有关于线性代数的简要介绍——足够教给你图形学的第一门课。推荐的参考书:
Linear Algebra and Its Applications
Gilbert Strang
Academic Press
微积分学
微积分学是高级计算机图形学的重要成分。如果打算研究图形学,我强烈建议你应该对微积分学有初步认识。理由不仅仅是微积分学是一种很有用的工具,还有许多研究者用微积分学的术语来描述他们的问题和解决办法。另外,在许多重要的数学领域,微积分学被作为进一步学习的前提。学习了基本代数之后,微积分学又是一种能为你打开多数计算机图形学与后继的数学学习之门的课程。微积分学是我介绍的最后一个中学课程,以下提及的科目几乎全部是大学的课程。
微分几何学
微分几何学研究支配光滑曲线,曲面的方程组。如果你要计算出经过某个远离曲面的点并垂直于曲面的矢量(法向矢量)就会用到微分几何学。让一辆汽车以特定速度在曲线上行驶也牵涉到微分几何学。有一种通用的绘制光滑曲面的图形学技术,叫做“凹凸帖图”,这个技术用到了微分几何学。如果要着手于用曲线和曲面来创造形体(在图形学里称之为建模)你至少应该学习微分几何学的基础。推荐的参考书:
Elementary Differential Geometry
Barrett O'Neill
Academic Press
数值方法
几乎任何时候,我们在计算机里用近似值代替精确值来表示和操作数值,所以计算过程总是会有误差。而且对于给定的数值问题,常常有多种解决的方法,一些方法会更块,更精确或者对内存的需求更少。数值方法研究的对象包括“计算方法”和“科学计算”等等。这是一个很广阔的领域,而且我将提及的其他几门数学其实是数值方法的一些分支。这些分支包括抽样法理论,矩阵方程组,数值微分方程组和最优化。推荐的参考书:
Numerical Recipes in C: The Art of Scientific Computing
William Press, Saul Teukolsky, William Vetterling and Brian Flannery
Cambridge University Press
[这本参考书很有价值可是很少作为教材使用]
抽样法理论和信号处理
在计算机图形学里我们反复使用储存在正规二维数组里的数字集合来表示一些对象,例如图片和曲面。这时,我们就要用抽样法来表示这些对象。如果要控制这些对象的品质,抽样法理论就变得尤为重要。抽样法应用于图形学的常见例子是当物体被绘制在屏幕上时,它的轮廓呈现锯齿状的边缘。这锯齿状的边缘(被认为是“混淆”现象)是非常让人分散注意力的,用抽样法中著名的技术例如回旋,傅立叶变换,空间和频率的函数表示就能把这个现象减少到最小。这些思想在图像和音频处理领域是同样重要的。推荐的参考书:
The Fourier Transform. and Its Applications
Ronald N. Bracewell
McGraw Hill
矩阵方程组
计算机图形学的许多问题要用到矩阵方程组的数值解法。一些涉及矩阵的问题包括:找出最好的位置与方向以使对象们互相匹配(最小二乘法),创建一个覆盖所给点集的曲面,并使皱折程度最小(薄板样条算法),还有材质模拟,例如水和衣服等。在图形学里矩阵表述相当流行,因此在用于图形学的数学中我对矩阵方程组的评价是很高的。推荐的参考书:
Matrix Computations
Gene Golub and Charles Van Loan
Johns Hopkins University Press
物理学
物理学显然不是数学的分支,它是自成一家的学科。但是在计算机图形学的某些领域,物理学和数学是紧密联系的。在图形学里,牵涉物理学的问题包括光与物体的表面是怎样互相影响的,人与动物的移动方式,水与空气的流动。为了模拟这些自然现象,物理学的知识是必不可少的。这和解微分方程紧密联系,我将会在下一节提到微分方程。
微分方程的数值解法
我相信对于计算机图形学来说,解微分方程的技巧是非常重要的。像我们刚才讨论的,计算机图形学致力于模拟源于真实世界的物理系统。波浪是怎样在水里形成的,动物是怎样在地面上行走的,这就是两个模拟物理系统的例子。模拟物理系统的问题经常就是怎样解微分方程的数值解。请注意,微分方程的数值解法与微分方程的符号解法是有很大差异的。符号解法求出没有误差的解,而且时常只用于一些非常简单的方程。有时大学课程里的“微分方程”只教符号解法,不过这并不会对多数计算机图形学的问题有帮助。在对物理系统的模拟中,我们把世界细分为许多表示成矢量的小元素。然后这些元素之间的关系就可以用矩阵来描述。虽然要处理的矩阵方程组往往没有很精确的解,但是取而代之的是执行了一系列的计算,这些计算产生一个表示成数列的近似解。这就是微分方程的数值解法。请注意,矩阵方程的解法与微分方程数值解法的关系是很密切的。
最优化
在计算机图形学里,我们常常为了期望的目标寻求一种合适的描述对象或者对象集的方法。例如安排灯的位置使得房间的照明看起来有种特殊的“感觉”,动画里的人物要怎样活动四肢才能实现一个特殊的动作,怎样排版才不会使页面混乱。以上这些例子可以归结为最优化问题。十年前的计算机图形学几乎没有最优化技术的文献,不过最近这个领域越来越重视最优化理论。我认为在计算机图形学里,最优化的重要性将会日益增加。
概率论与统计学
计算机图形学的许多领域都要用到概率论与统计学。当研究者涉足人类学科时,他们当然需要统计学来分析数据。图形学相关领域涉及人类学科,例如虚拟现实和人机交互(HCI)。另外,许多用计算机描绘真实世界的问题牵涉到各种未知事件的概率。两个例子:一棵成长期的树,它的树枝分杈的概率;虚拟的动物如何决定它的行走路线。最后,一些解高难度方程组的技巧用了随机数来估计方程组的解。重要的例子:蒙特卡罗方法经常用于光如何传播的问题。以上仅是一部分在计算机图形学里使用概率论和统计学的方法。
计算几何学
计算几何学研究如何用计算机高效地表示与操作几何体。典型问题如,碰撞检测,把多边形分解为三角形,找出最靠近某个位置的点,这个学科包括了运算法则,数据结构和数学。图形学的研究者,只要涉足创建形体(建模),就要大量用到计算几何学。推荐的参考书:
Computational Geometry in C
Joseph O'Rourke
Cambridge University Press
[大学教材]
Computational Geometry: An Introduction
Franco Preparata and Michael Shamos
Springer-Verlag
[很经典,不过有点旧了]
总结:数学应用和数学理论
对于图形学来说,以上提到的许多数学学科都有个共同点:比起这些数学的理论价值,我们更倾向于发掘它们的应用价值。不要惊讶。图形学的许多问题和物理学者与工程师们研究的问题是紧密联系的,并且物理学者与工程师们使用的数学工具正是图形学研究者们使用的。多数研究纯数学理论的学科从不被用于计算机图形学。不过这不是绝对的。请注意这些特例:分子生物学正利用节理论来研究DNA分子动力学,亚原子物理学用到了抽象群论。也许有一天,纯数学理论也能推动计算机图形学的发展,谁知道呢?
有些看来重要的数学实际上在计算机图形学里不常被用到。可能拓扑学是此类数学中最有意思的。用一句话来形容拓扑学,它研究油炸圈饼与咖啡杯为什么在本质上是相同的。答案是他们都是只有一个洞的曲面。我们来讨论一下拓扑学的思想。虽然曲面是计算机图形学的重要成分,不过微分几何学的课程已经涵盖了多数对图形学有用的拓扑学知识。微分几何学研究曲面的造型,可是拓扑学研究曲面的相邻关系。我觉得拓扑学对于图形学来说几乎没用,这是由于拓扑学关心抽象的事物,而且拓扑学远离了多数图形学的核心——三维欧氏空间的概念。对于图形学来说,拓扑学的形式(符号表示法)是表达思想的简便方法,不过图形学很少用到抽象拓扑学的实际工具。对图形学来说,拓扑学像一个好看的花瓶,不过别指望它能立即带给你回报。
有人曾经这么问我,计算机图形学是否用到了抽象代数(群论,环,等等….)或者数论。我没怎么遇到过。和拓扑学一样,这些学科有很多美好的思想。可是很不幸,这些思想很少用于计算机图形学。
欢迎关注微信公众号——计算机视觉:
相关推荐
《3D游戏与计算机图形学中的数学方法》是一本深入探讨3D游戏开发与计算机图形学中数学原理的宝贵资源。这本书分为两个英文版本(2nd Edition和3rd Edition),并附带C++源代码,为读者提供了理论与实践相结合的学习...
计算机图形学是一门涵盖广泛的学科,它涉及到计算机生成和处理图像的理论与技术。在本实验"计算机图形学实现的动画自行车"中,我们将探讨如何使用编程语言和计算机图形库来创建一个动态显示的自行车模型。这个动画...
【标题】"计算机图形学C++画圆"涉及的核心知识点主要集中在计算机图形学的基本原理以及C++编程语言在实现图形绘制中的应用。计算机图形学是一门研究如何在计算机系统中生成、处理和显示图像的科学,它在游戏开发、...
例如,计算机图形学中也会用到数字图像处理,现今的三维游戏为了增加表现力都会叠加全屏的后期特效,原理就是数字图像处理,只是将计算量放在了显卡端。计算机视觉更是大量依赖数字图像处理,例如对需要识别的照相...
计算机图形学是研究如何用计算机技术生成、处理、存储和显示图形信息的学科。它包含了许多基础概念和技术,其中一些关键知识点如下: 1. 图形:在计算机图形学中,图形通常指的是可以由计算机处理和显示的视觉信息...
计算机图形学是一门深入研究如何在计算机中生成、处理和显示图像的学科。在这个研究生级别的课程作业中,学生使用C++编程语言实现了多种关键概念和技术,涵盖了计算机图形学的多个重要方面。 首先,画点和画线是...
计算机图形学是一门涵盖广泛的学科,它涉及到计算机如何生成、处理和显示图像。在本项目中,"交互式图形绘制"是指用户可以通过图形用户界面(GUI)与计算机进行交互,执行如拉框放大、曲线绘制和直线选取等操作。...
本书还新增了有关层次建模和图形文件格式的介绍,最后的附录给出了计算机图形学中用到的基本数学概念。 本书可作为信息技术等相关专业本科生和研究生的教材或参考书,也可作为计算机图形技术人员的参考资料。 补充...
总的来说,这个实验旨在让学习者掌握分形的概念,理解其生成算法,并能利用计算机图形学技术将抽象的数学概念转化为直观的视觉表现。通过实践,不仅提升了编程能力,还加深了对计算机图形学原理的理解,为后续的学习...
计算机图形学是一门涵盖广泛的学科,它涉及到计算机生成和处理图像的理论与技术。这个经典教程涵盖了计算机图形学的核心概念,旨在帮助学习者理解和掌握如何使用计算机来创建、操作和显示复杂的图形信息。 首先,从...
计算机图形学实验,特别是涉及图形交互技术的部分,是计算机科学中的一个重要领域,它结合了编程、数学和艺术,用于创建和操纵可视化的图像。在这个实验中,我们将关注如何使用计算机来处理图形,以及如何实现用户与...
计算机图形学是一门涵盖广泛的学科,它涉及到计算机如何创建、处理和显示图像。在这个"计算机图形学作业"中,我们看到一系列与MFC(Microsoft Foundation Classes)框架相关的项目,这通常用于开发Windows桌面应用...
计算机图形学是信息技术领域的一个重要分支,主要研究如何在计算机中表示、处理和显示图形。在计算机图形学中,图形变换起着至关重要的作用,它允许我们改变图形的位置、大小、形状和方向,以实现各种视觉效果。本节...
计算机图形学是一门涵盖广泛领域的学科,主要研究如何在计算机中表示、处理和显示图形信息。在这个实验中,我们将探讨几个关键概念,包括一笔绘制金刚石、魔术三角形、北极星,以及绘制贝塞尔曲线和B样条曲线,还有...
计算机图形学是一门涵盖广泛领域的学科,主要涉及利用算法和数学模型在计算机上创建、处理和展示图像。在这个“3D立体查看 课程设计 计算机图形学”项目中,我们将深入探讨如何通过编程实现3D物体的绘制,包括消隐...
在3D游戏与计算机图形学中,数学方法扮演着至关重要的角色。它们是构建虚拟世界、实现逼真渲染和交互的基础。计算机图形学是研究如何用计算机生成、处理和显示图像的学科,其中数学是其核心语言。让我们深入探讨一些...
总之,C++计算机图形学是将抽象的数学模型转化为可视化图像的过程,涉及到许多有趣的算法和技巧。无论是为了学术研究还是游戏开发,掌握这些知识都将为你的IT事业增添一抹亮色。通过不断实践和探索,你可以创造出更...
计算机图形学是信息技术领域的一个重要分支,主要研究如何在计算机中表示、处理和显示图形。在本次江苏大学的计算机图形学第三次实验中,学生将深入探索二维图形变换这一主题。二维图形变换是图形学的基础,它涉及到...
计算机图形学是信息技术领域的一个重要分支,主要研究如何在计算机中表示、处理和显示图形。在"武汉大学计算机图形学实习"中,学生将深入学习并实践这一领域的核心概念和算法,以创建具有三维演示能力的画图程序。...
计算机图形学是一门涵盖广泛的学科,它涉及到计算机生成和处理图像的理论与技术。这个压缩包文件中的资源,特别是“《计算机图形学》实验指导书.doc”和几个实验文本文件,很显然为我们提供了深入学习这门学科的实践...