游戏编程数学和物理基础
基本信息
- 作者: (美)Wendy Stahler [作译者介绍]
- 译者: 徐明亮 郭红 王琬 胡婷婷
- 丛书名: 游戏开发技术系列丛书
- 出版社:机械工业出版社
- ISBN:9787111236962
- 上架时间:2008-5-23
- 出版日期:2008 年5月
- 开本:16开
- 页码:306
- 版次:1-1
- 所属分类:
计算机 > 游戏 > 游戏编程
编辑推荐
本书是“游戏开发技术系列丛书”之一,全书分14个章节,对成功开发一款游戏所必需的数学物理概念、定律和公式等内容作了介绍,主要包括三角几何知识、向量和矩阵运算、变换、碰撞和能量等。该书可供各大专院校作为教材使用,也可供从事相关工作的人员作为参考用书使用。
掌握开发游戏所必需的数学和物理知识:
如果你想踏入游戏行业,或者想对代数、几何和三角函数等知识有所了解的话,本书非常适合您!本书向读者介绍了成功开发一款游戏所必需的数学物理概念、定律和公式等。本书讨论了三角几何知识,向量和矩阵运算,变换,碰撞和能量,以及1D/2D/3D空间内的运动等内容,循循善诱地指导读者如何利用数学与物理知识达到提升自身游戏开发水平的目的。
本书包括以下内容:
进入3D实时游戏编程高级领域的必备知识。
以简易的形式提供开发3D游戏所必需掌握的重要公式。
书中程序都采用C++语言编写,教导读者如何将相关概念在具体编程中实现。
本书除包含读者应该掌握的基础知识之外,还包含一些有用的工具,引导读者在实际项目中运用所学到的知识:
可视化体验:这些演示程序在交互性环境下,用图形直观地阐述每章中的重要概念。
自我测试:在进一步学习下一章之前,对您所学的知识进行检验。
练习与程序设计:通过这些训练,提升在实践中运用所学知识的能力。
问题讨论:这些问题会对每章中的一些重要概念进行思维拓展。、
光盘资源:在光盘上可以找到“可视化体验”中用到的程序,使您能够直接感受到所涉及的每个概念。
在线网站(www.prenhall.com/gamedesdev)包含以下内容:
一些测试题目和项目,可帮助您巩固本书所学内容。
一些有用的链接,能够帮助您在游戏开发领域内进一步发展。
内容简介回到顶部↑
本书介绍了成功开发一款游戏所必需的数学物理概念、定律和公式等。主要内容包括三角几何知识、向量和矩阵运算、变换、碰撞和能量,以及1d/2d/3d空间内的运动等专题,循循善诱地教导读者如何利用数学与物理知识提升自身游戏开发水平。
本书适合于所有对游戏开发与编程感兴趣的读者,如果你想踏入游戏行业,或者想对代数、几何和三角函数知识有所了解的话,本书非常适合您!
本书适合于所有对游戏开发与编程感兴趣的读者,如果你想踏入游戏行业,或者想对代数、几何和三角函数知识有所了解的话,本书非常适合您!
作译者回到顶部↑
本书提供作译者介绍
Wendy Stahler是位于美国佛罗里达州冬季公园市(Winter Park)的Full Sail Real World Education学院游戏设计与开发专业的首席教员。在Full Sail学院的6年里,她致力于游戏编程中数学、物理知识的教学研究。同时,Wendy也是罗林斯学院(Rollins College) IT工程系的副教授,并最近刚开始负责IT培训的任务。Wendy毕业于罗林斯学院,在那里她获得了数学和计算机科学的学士学位,并获得企业传播与技术专业硕士学位。...
.. << 查看详细
.. << 查看详细
目录回到顶部↑
译者序
前言
第1章 点和直线
1.1 点的定义
1.2 线的定义
1.3 线的属性
1.4 在相交检测中的应用
本章总结
能力测试
第2章 相关几何知识
2.1 两点间的距离
2.2 抛物线
2.3 圆和球
2.4 在碰撞检测中的应用
2.5 碰撞检测的视觉体验
本章总结
能力测试
第3章 三角函数
3.1 角度和弧度
3.2 三角函数
前言
第1章 点和直线
1.1 点的定义
1.2 线的定义
1.3 线的属性
1.4 在相交检测中的应用
本章总结
能力测试
第2章 相关几何知识
2.1 两点间的距离
2.2 抛物线
2.3 圆和球
2.4 在碰撞检测中的应用
2.5 碰撞检测的视觉体验
本章总结
能力测试
第3章 三角函数
3.1 角度和弧度
3.2 三角函数
译者序回到顶部↑
应朋友邀请,为明亮这本《游戏编程数学和物理基础》译著作序,因为书稿要马上付印,所以成文苍促,请作者和读者海涵。.
电脑游戏技术日新月异,游戏画面从早期的平面到立体,从抽象到拟真。 使得玩游戏享受的不再只是娱乐性,而是更具欣赏性。 现在许多游戏的画面看起来如同电影大片,使得某些时候看别人玩游戏也是一种享受,这是因为三维图形技术的不断进步。 三维技术的发展也是促使游戏产业市场高速发展的因素之一,我认为其重要性仅次于网络。画面技术的进步,改变了许多人对游戏的印象,不再认为游戏只是给小孩玩的,更多不同年龄层的人成为游戏玩家,如今,成年人游戏玩家已经比未成年的多得多。 ..
为什么这些游戏能让人乐此不疲的沉浸其中?除了它的剧情刺激有趣、引人入胜外,其场景的高度逼真使得玩家们仿佛身临其境,也是一个重要原因。这些均要归功于本书的主题——游戏编程中的数学和物理知识,这也是一个合格的游戏程序员所必须具备的基本数理基础。试想,即便对一个编程水平很高的程序员来说,如果不懂一点牛顿动力学原理,无论如何他也不可能开发出能在凹凸不平的地面上剧烈颠簸的极品飞车;如果不了解一些基本的空间几何知识,恐怕他也很难编写出正确的三维图形处理程序。因此,我建议有志投身于游戏产业的读者,在学习之初,一定要好好复习一下那些曾经在中学或大学期间学习过,但现在已经淡忘的数学和物理知识,并好好体会一下在游戏开发中应该如何运用这些知识。
国内三维图形技术这几年发展的很快,和欧美的差距在不断缩小,但毕竟这门学问起源于欧美,要发展中国的游戏产业,除了国人自身努力外,引进国外的新知也是必须的。 身为中国游戏制作者的一份子,我很感谢作者的努力,也感谢译者的辛苦,希望对国内三维技术多添一份力量。在国内游戏研发产业发展迅猛,技术人才供不应求的今天,希望有更多相关书籍出现,为民族游戏产业培育更多人才。...
仙剑之父
大宇资迅软星科技(北京)有限公司总经理
姚壮宪
2008年4月13日于北京
电脑游戏技术日新月异,游戏画面从早期的平面到立体,从抽象到拟真。 使得玩游戏享受的不再只是娱乐性,而是更具欣赏性。 现在许多游戏的画面看起来如同电影大片,使得某些时候看别人玩游戏也是一种享受,这是因为三维图形技术的不断进步。 三维技术的发展也是促使游戏产业市场高速发展的因素之一,我认为其重要性仅次于网络。画面技术的进步,改变了许多人对游戏的印象,不再认为游戏只是给小孩玩的,更多不同年龄层的人成为游戏玩家,如今,成年人游戏玩家已经比未成年的多得多。 ..
为什么这些游戏能让人乐此不疲的沉浸其中?除了它的剧情刺激有趣、引人入胜外,其场景的高度逼真使得玩家们仿佛身临其境,也是一个重要原因。这些均要归功于本书的主题——游戏编程中的数学和物理知识,这也是一个合格的游戏程序员所必须具备的基本数理基础。试想,即便对一个编程水平很高的程序员来说,如果不懂一点牛顿动力学原理,无论如何他也不可能开发出能在凹凸不平的地面上剧烈颠簸的极品飞车;如果不了解一些基本的空间几何知识,恐怕他也很难编写出正确的三维图形处理程序。因此,我建议有志投身于游戏产业的读者,在学习之初,一定要好好复习一下那些曾经在中学或大学期间学习过,但现在已经淡忘的数学和物理知识,并好好体会一下在游戏开发中应该如何运用这些知识。
国内三维图形技术这几年发展的很快,和欧美的差距在不断缩小,但毕竟这门学问起源于欧美,要发展中国的游戏产业,除了国人自身努力外,引进国外的新知也是必须的。 身为中国游戏制作者的一份子,我很感谢作者的努力,也感谢译者的辛苦,希望对国内三维技术多添一份力量。在国内游戏研发产业发展迅猛,技术人才供不应求的今天,希望有更多相关书籍出现,为民族游戏产业培育更多人才。...
仙剑之父
大宇资迅软星科技(北京)有限公司总经理
姚壮宪
2008年4月13日于北京
前言回到顶部↑
8年前,有人曾问我有哪些关于游戏编程中的数学和物理知识的书籍,但当时基本上没有该方面的参考书籍。虽然在一些游戏开发书籍或产业杂志上有一些零零碎碎的相关文章,但是没有一本书是集中讨论游戏编程中的数学物理知识的。于是,我便满怀热情地搜集和整理该方面的资料,并查阅了经典数学、物理教科书和相关文献,结合游戏编程的相关书籍,最终完成了本书的核心部分。.
当我在Full Sail公司研究游戏设计与开发时,又进一步整理和提炼了相关资料。此时,市面上也出版了一些相关书籍,然而由于这些书籍非常抽象难懂,看起来让人头疼,所以我便打算根据已有的资料为编程人员写一些通俗易懂的东西。起初,编写该书是想作为一本能够提供查阅的工具书而已,后来发现将其作为一本教科书会更合适一些。本书不仅可以作为学习游戏编程中数学物理知识的参考书籍,我更希望它能成为一座里程碑,使你能够在游戏开发的世界中展翅翱翔,获得无穷的乐趣!
适合读者
本书适合于所有对游戏开发与编程感兴趣的读者,书中的大部分实例源代码以及演示程序的代码都放在随书光盘上了。如果你已经对C++比较熟悉,可以对本书所讲的内容进行深一步的研究。不过,在理解具体概念之前,不应该直接进行编程练习,建议首先做一下自我测试中的问题。若要完成问题讨论和项目中的问题,则需要读者对C++有一个全面的理解。请记住,本书不是一本关于3D游戏编程的书籍,而只是介绍3D游戏编程中所涉及的数学物理知识,此外本书更不是介绍3D高等数学的书籍,它只是一本入门书籍,讲解模拟真实3D场景的基础知识。如果你对代数学知识掌握扎实的话,本书你将会收获更多的知识。另外你也需对几何学和三角学知识有一定的掌握,这样才能获得更大的成功。
本书概览
本书的前一部分介绍数学基础知识,后一部分介绍物理相关知识,其中前面内容是学习后面物理知识的基础。
第1章从点和直线开始,对2D和3D中的点与直线进行了定义,然后讨论了它们在相交检测中的应用。
第2章介绍了游戏编程中的几何学知识,复习了勾股定理、两点间距离公式以及中点公式;然后分别介绍了几种常见几何体的方程,如圆、抛物线和球等,它们会在碰撞检测中进一步用到。
第3章介绍了游戏编程中用到的三角形知识,定义了6种基本的三角函数,然后讨论了在角度与弧度之间的转换过程,并用程序进行了实现。
第4章介绍了向量的概念,它可用来描述一个物理量,然后介绍了向量的不同形式,并讨论了向量相关的运算,如向量相加、相减、标量与向量相乘、点乘、叉乘和单位化等。
第5章介绍了矩阵以及相关的数学运算,如矩阵相加、相减、标量与矩阵相乘、矩阵相乘、转置等。
第6章介绍了矩阵最好的应用——变换,矩阵变换包括平移、缩放和旋转控制了游戏中所有物体的运动,最后给出了一些关于游戏编程的优化技巧。
第7章介绍物理单位之间的转换,在编程中一定要将所有单位转换成一致的。
第8章开始介绍物理知识,定义了速度、加速度和位移的概念,并给出了它们在一维空间中与时间的关系。
第9章介绍速度和加速度的导数形式,并简单论述了微积分的基础知识。
第10章将前面两章的内容扩展到2D和3D空间中,本章侧重介绍了抛物运动。
第11章介绍作用力与物体运动之间的关系,由牛顿三大运动定律可以确定现实中的所有运动,本章的运动定律与以前章节内容具有很重要的联系。
第12章介绍了两种不同类型的能量,在游戏中可以利用另外一种方法——能量守恒去模拟物体的运动。
第13章介绍游戏中的一个有趣环节——碰撞,游戏若没有碰撞就没有物体间的交互性,该章描述了物体发生碰撞后的响应处理,即物体应该怎样运动。
第14章讨论物体的旋转运动,它对前面介绍的物理概念进行了扩展,以适应于旋转运动。
当我在Full Sail公司研究游戏设计与开发时,又进一步整理和提炼了相关资料。此时,市面上也出版了一些相关书籍,然而由于这些书籍非常抽象难懂,看起来让人头疼,所以我便打算根据已有的资料为编程人员写一些通俗易懂的东西。起初,编写该书是想作为一本能够提供查阅的工具书而已,后来发现将其作为一本教科书会更合适一些。本书不仅可以作为学习游戏编程中数学物理知识的参考书籍,我更希望它能成为一座里程碑,使你能够在游戏开发的世界中展翅翱翔,获得无穷的乐趣!
适合读者
本书适合于所有对游戏开发与编程感兴趣的读者,书中的大部分实例源代码以及演示程序的代码都放在随书光盘上了。如果你已经对C++比较熟悉,可以对本书所讲的内容进行深一步的研究。不过,在理解具体概念之前,不应该直接进行编程练习,建议首先做一下自我测试中的问题。若要完成问题讨论和项目中的问题,则需要读者对C++有一个全面的理解。请记住,本书不是一本关于3D游戏编程的书籍,而只是介绍3D游戏编程中所涉及的数学物理知识,此外本书更不是介绍3D高等数学的书籍,它只是一本入门书籍,讲解模拟真实3D场景的基础知识。如果你对代数学知识掌握扎实的话,本书你将会收获更多的知识。另外你也需对几何学和三角学知识有一定的掌握,这样才能获得更大的成功。
本书概览
本书的前一部分介绍数学基础知识,后一部分介绍物理相关知识,其中前面内容是学习后面物理知识的基础。
第1章从点和直线开始,对2D和3D中的点与直线进行了定义,然后讨论了它们在相交检测中的应用。
第2章介绍了游戏编程中的几何学知识,复习了勾股定理、两点间距离公式以及中点公式;然后分别介绍了几种常见几何体的方程,如圆、抛物线和球等,它们会在碰撞检测中进一步用到。
第3章介绍了游戏编程中用到的三角形知识,定义了6种基本的三角函数,然后讨论了在角度与弧度之间的转换过程,并用程序进行了实现。
第4章介绍了向量的概念,它可用来描述一个物理量,然后介绍了向量的不同形式,并讨论了向量相关的运算,如向量相加、相减、标量与向量相乘、点乘、叉乘和单位化等。
第5章介绍了矩阵以及相关的数学运算,如矩阵相加、相减、标量与矩阵相乘、矩阵相乘、转置等。
第6章介绍了矩阵最好的应用——变换,矩阵变换包括平移、缩放和旋转控制了游戏中所有物体的运动,最后给出了一些关于游戏编程的优化技巧。
第7章介绍物理单位之间的转换,在编程中一定要将所有单位转换成一致的。
第8章开始介绍物理知识,定义了速度、加速度和位移的概念,并给出了它们在一维空间中与时间的关系。
第9章介绍速度和加速度的导数形式,并简单论述了微积分的基础知识。
第10章将前面两章的内容扩展到2D和3D空间中,本章侧重介绍了抛物运动。
第11章介绍作用力与物体运动之间的关系,由牛顿三大运动定律可以确定现实中的所有运动,本章的运动定律与以前章节内容具有很重要的联系。
第12章介绍了两种不同类型的能量,在游戏中可以利用另外一种方法——能量守恒去模拟物体的运动。
第13章介绍游戏中的一个有趣环节——碰撞,游戏若没有碰撞就没有物体间的交互性,该章描述了物体发生碰撞后的响应处理,即物体应该怎样运动。
第14章讨论物体的旋转运动,它对前面介绍的物理概念进行了扩展,以适应于旋转运动。
书摘回到顶部↑
第1章 点和直线
本章目标
阅读本章内容并完成后面的练习之后,你将能够:
在屏幕上用数值表示一个位置
在3D空间内用数值表示一个位置
计算直线的斜率
使用数学方程表示直线
使用数学方程表示垂线
在3D空间内定义直线
检测两条直线是否相交,以及在何处相交
介绍
你是否曾经想过要编写一个游戏,但又不知道该从哪里人手?电脑是怎么知道将一个物体放到何处的?它又是怎样让物体移动的?这一章的内容将会帮你回答这些问题,而且还会为本书的后续章节打下基础。
本章首先定义了点,从而就可以把物体放置在2D平面或者复杂3D场景里的具体位置上;然后建立了坐标系,它将在后续章节里一直沿用。至此,你就可以开始研究2D和3D场景中的直线了。点给出了物体的具体位置,而线能够确定物体的移动轨迹甚至物体的边缘。在讨论完有关直线的所有属性(比如斜率)之后,本章的最后将会讨论一下游戏环境中直线与直线的相交检测问题。
1.1 点的定义
在游戏编程中,需要处理许多不同类型的函数。一般而言,一个函数就相当于一条规则,它接受一些信息(输入信息)并返回由该规则产生的新信息(输出信息)。在编程过程中,函数可以接受不同类型的输入信息,比如变量、文本或者数字等,而返回不同类型的输出信息,甚至输出就是完成一定的功能。在一个编写优秀的程序中,你应该将重复执行的部分编写为函数,从而使书写的代码保持简单性和清晰陸。下面让我们来看一个有用而且具有良好注释的例子:
……
本章目标
阅读本章内容并完成后面的练习之后,你将能够:
在屏幕上用数值表示一个位置
在3D空间内用数值表示一个位置
计算直线的斜率
使用数学方程表示直线
使用数学方程表示垂线
在3D空间内定义直线
检测两条直线是否相交,以及在何处相交
介绍
你是否曾经想过要编写一个游戏,但又不知道该从哪里人手?电脑是怎么知道将一个物体放到何处的?它又是怎样让物体移动的?这一章的内容将会帮你回答这些问题,而且还会为本书的后续章节打下基础。
本章首先定义了点,从而就可以把物体放置在2D平面或者复杂3D场景里的具体位置上;然后建立了坐标系,它将在后续章节里一直沿用。至此,你就可以开始研究2D和3D场景中的直线了。点给出了物体的具体位置,而线能够确定物体的移动轨迹甚至物体的边缘。在讨论完有关直线的所有属性(比如斜率)之后,本章的最后将会讨论一下游戏环境中直线与直线的相交检测问题。
1.1 点的定义
在游戏编程中,需要处理许多不同类型的函数。一般而言,一个函数就相当于一条规则,它接受一些信息(输入信息)并返回由该规则产生的新信息(输出信息)。在编程过程中,函数可以接受不同类型的输入信息,比如变量、文本或者数字等,而返回不同类型的输出信息,甚至输出就是完成一定的功能。在一个编写优秀的程序中,你应该将重复执行的部分编写为函数,从而使书写的代码保持简单性和清晰陸。下面让我们来看一个有用而且具有良好注释的例子:
……
【插图】







点击看大图





加载中...

