出版社: 清华大学出版社
副标题: 图形与游戏开发
原作名: 3D Math Primer for Graphics and Game Development
译者: 史银雪 / 陈洪 / 王荣静
出版年: 2005-7-1
页数: 380
定价: 42.00元
装帧: 平装
ISBN: 9787302109464
内容简介 · · · · · ·
本书主要研究隐藏在3D几何世界背后的数学问题。3D数学是一门与计算几何相关的学科,计算几何则是研究怎样用数值方法解决几何问题的学科。3D数学和计算几何广泛应用在那些使用计算机来模拟3D世界的领域,如图形学、游戏、仿真、机器人技术、虚拟现实和动画等。
本书涵盖了理论知识和C++实现代码。理论部分解释3D中数学和几何之间的关系,列出的技巧与公式可以当做参考手册以方便查找。实现部分演示了怎样用代码来实现这些理论概念。编程示例语言使用的是C++,实际上,本书的理论知识能通过任何编程语言实现。
作者简介 · · · · · ·
Fletcher Dunn,是著名游戏开发公司Terminal Reality的主要开发人员,所参与开发的游戏包括《4×4DVO 2)、《夜曲》(Noturne),并且是《吸血莱恩》(BloodRayne)的主要负责人。他所开发的游戏遍及家用PC机的Windows、Machintosh、Dreamcast、PSⅡ、Xbox和GameCube几种主流平台。
Ian Parberry,是北德克萨斯大学计算机科学系的教授,在国际上被公认为是教授DirectX游戏开发的顶级专家之一。
目录 · · · · · ·
1.1 什么是3D数学
1.2 为什么选择本书
1.3 阅读本书需要的基础知识
1.4 概览
第2章 笛卡尔坐标系统
2.1 1D数学
2.2 2D笛卡尔数学
2.3 从2D到3D
2.4 练习
第3章 多坐标系
3.1 为什么要使用多坐标系
3.2 一些有用的坐标系
3.3 嵌套式坐标系
3.4 描述坐标系
3.5 坐标系转换
3.6 练习
第4章 向量
4.1 向量——数学定义
4.2 向量——几何定义
4.3 向量与点
4.4 练习
第5章 向量运算
5.1 线性代数与几何
5.2 符号约定
5.3 零向量
5.4 负向量
5.5 向量大小(长度或模)
5.6 标量与向量的乘法
5.7 标准化向量
5.8 向量的加法和减法
5.9 距离公式
5.10 向量点乘
5.11 向量叉乘
5.12 线性代数公式
5.13 练习
第6章 3D向量类
……
第7章 矩阵
第8章 矩阵和线性变换
第9章 矩阵的更多知识
第10章 3D中的方位与角位移
第11章 C++实现
第12章 几何图元
第13章 几何检测
第14章 三角网络
第15章 图形数学
第16章 可见性检测
第17章 后记
附录A 简单的数学概念
附录B 参考文献
· · · · · · (收起)
喜欢读"3D数学基础"的人也喜欢的电子书 · · · · · ·
喜欢读"3D数学基础"的人也喜欢 · · · · · ·
3D数学基础的书评 · · · · · · ( 全部 14 条 )


结合实践与编程的数学,好书值得推荐
> 更多书评 14篇
-
豌豆 (甲方的责任就是帮助乙方实现自己)
第四章 矢量 数学与几何两种含义 数学含义 矢量是一组数字。 计算机含义,矢量是数组。 包括多少数字是矢量的维度。 几何含义 矢量是线段的长度和指向 magnitude & direction displacement 位移矢量 velocity 速率矢量 distance 距离标量 speed 速度标量 矢量没有位置,相对存在 标量无方向 矢量中的数字在各维度,标识带符号的位移。 Vectors are specified by giving the signed displacement in each dimension. 点 指示...2012-02-10 16:05:35 1人喜欢
第四章 矢量 数学与几何两种含义 数学含义 矢量是一组数字。 计算机含义,矢量是数组。 包括多少数字是矢量的维度。 几何含义 矢量是线段的长度和指向 magnitude & direction displacement 位移矢量 velocity 速率矢量 distance 距离标量 speed 速度标量 矢量没有位置,相对存在 标量无方向 矢量中的数字在各维度,标识带符号的位移。 Vectors are specified by giving the signed displacement in each dimension. 点 指示位置(与矢量不同) 矢量标识出相对位移,在大框架之下找到位置。
回应 2012-02-10 16:05:35 -
豌豆 (甲方的责任就是帮助乙方实现自己)
实际城市中存在多层次的权限划分,每层次有自己的独立坐标空间,又要参考上下层次的空间。 特殊领域内容需要一些不同的坐标空间信息 +世界空间(east, west) Latitude 33度01' North Longitude 96度59' West world space global space universal coordinate space [Questions] 物体位置朝向; 镜头位置朝向; 景物位置外观; 物体移动规律; - what is the position and orientation of each object? - what is the ...2012-02-10 16:03:24 1人喜欢
实际城市中存在多层次的权限划分,每层次有自己的独立坐标空间,又要参考上下层次的空间。 特殊领域内容需要一些不同的坐标空间信息 +世界空间(east, west) Latitude 33度01' North Longitude 96度59' West world space global space universal coordinate space [Questions] 物体位置朝向; 镜头位置朝向; 景物位置外观; 物体移动规律; - what is the position and orientation of each object? - what is the position and orientation of the camera? - what is the terrain like in each position in the world?(hills,mountains,lakes,buildings) - how does each object get from where it is to where it wants to be?(motion planning for npc) +物体空间(left, forward) object space modeling space body space [Questions] 附近物体识别; 物体相对方位; - is there another object near me that I need to interact with?(Do I need to kill it?) - in what direction is it? is it front of me? Slightly to my left? To my right? (So I can shoot at it or rum in the opposite direction) +镜头空间 camera space a coordinate with an observer [Questions] 镜头内可见; 镜头的平截头体内相对位置; 整体局部可见或不可见; 物体间遮挡; - is a given point in 3D space in front of the camera? - is a given point in 3D space on screen, or is it off to the left, right, top, or bottom edges of the camera frustum? 镜头的平截头体 - is an object completely on screen, partially on screen, or completely off screen? - which of the two objects is in front of the other?(This is called occlusion information) 3D to 2D method : projection process. +惯性空间? 物体空间经过旋转达到惯性空间,而由惯性空间经过偏移到达世界空间; 用惯性空间分割了rotate和transform两个动作可以简化问题 Clearly, the robot thinks that her y-axis points from her feet to her head and that her x-axis points to her left. The robot’s inertial space is obtained from her object space by rotating her object axes about their origin until the axes are parallel with the world axes (Figure 3.4). Finally, inertial space can be transformed to world space by moving the origin of inertial space to the origin of world space to be precise, we must specify the location and orientation of the object's axes in world coordinates. 需要用世界坐标解决物体相对位置 positive 正向的 positive x-axes; negative 负向的 嵌套的坐标系统 世界系统 -> 物体系统 不在镜头内的物体,仅记录"物体系统"对于"世界系统"的位置+朝向 因物体在世界里溜达,世界空间做父,物体空间做子很方便。 物体打开成组件也可方便的独立动画 羊可边前进(世界空间),边前后晃头(羊空间),边上下摆耳朵(头部空间) 物体内部形成垂直体系,各个组件按次序依存在层次结构中,根据物体的动作复杂程度,划分多层次,进行相对运动计算。 子坐标系统嵌套(nested)在父坐标系统中。 世界坐标系统是树的根,虚拟世界的树结构可以在生命周期里不断的动态改变。 [coordinate space transformation] 我们需把世界空间的位置 转换 到 物体空间 或反之 总结: 1. 绘制物体树结构 2. 物体与世界空间向连接的媒体,旋转和移动的相对性角度是相反的。
回应 2012-02-10 16:03:24 -
豌豆 (甲方的责任就是帮助乙方实现自己)
三维数学用于度量位置,距离,角度。 2.1 1D Cartesion coordinate system 笛卡尔坐标系 René Descartes 1596-1650 French philosopher, physicist, physiologist, mathematician 自然数 natural number, 常叫做counting number, 几千年前发明的 (! 手指也许十进制的来历) 整数 integer number, consist of the natural numbers and their negative counterparts 分数 fractional number, consisting of one integer...2012-02-10 16:00:52 1人喜欢
三维数学用于度量位置,距离,角度。 2.1 1D Cartesion coordinate system 笛卡尔坐标系 René Descartes 1596-1650 French philosopher, physicist, physiologist, mathematician 自然数 natural number, 常叫做counting number, 几千年前发明的 (! 手指也许十进制的来历) 整数 integer number, consist of the natural numbers and their negative counterparts 分数 fractional number, consisting of one integer divided by another 有理数 rational number, fit in the number line in the obvious places between integers 小数记法 decimal notation, 分数冗长乏味 PI ratio of the circumference of a circle to its diameter. 实数 real number, 包括有理数,小数。harmless delusion 离散数学 discrete mathematics 连续数学 continuous mathematics The First Law of Computer Graphics: If it looks right, it is right. 三角学 trigonometry because Descartes notwithstanding, we told you so, because it would be nice, and because it makes sense. 2.2 2D 假想城市 The Hypothetical City of Cartesia 二维坐标系 “等价”, 8种指向方向能完全转换,四种旋转,四种反向观察。 而三维坐标系不等价。 2.3 3D 垂直正交 perpendicular In 3D, points are specified using three numbers, x, y, and z, which give the signed distance to the yz, xz, and xy planes, respectively. The distance is measured along a line parallel to the axis. left-handed coordinate system 3D Studio Max. the default orientation of the axes is for +x to point right, +y point forward, and +z to point up, Is this a left- or right-handed coordinate space?
回应 2012-02-10 16:00:52 -
pezy (Brevity Can Be a Virtue)
发现了和[http://book.douban.com/annotation/32032123/] 一样的问题 正确的向量投影,应该参考: [https://en.wikipedia.org/wiki/Vector_projection] 推理过程总结如下: 假设 ($\vec v$) 在 ($n$) 上的投影,平行于 ($\vec n$) 的称为 ($\vec v_1$),垂直于 ($\vec n$) 的称为 ($\vec v_2$)。 那么 \begin{eqnarray*} \vec v_1 & = & \hat n \|\vec v_1\| & = & \hat n\| \vec v\|\cos \theta & = &am... (6回应)2014-09-02 19:06:56
发现了和http://book.douban.com/annotation/32032123/ 一样的问题 正确的向量投影,应该参考: https://en.wikipedia.org/wiki/Vector_projection 推理过程总结如下: 假设 ($\vec v$) 在 ($n$) 上的投影,平行于 ($\vec n$) 的称为 ($\vec v_1$),垂直于 ($\vec n$) 的称为 ($\vec v_2$)。 那么
\begin{eqnarray*} \vec v_1 & = & \hat n \|\vec v_1\| & = & \hat n\| \vec v\|\cos \theta & = & \vec n \frac{\vec v \cdot \vec n}{\|\vec n\|^2} \end{eqnarray*}($$ \vec v_2 = \vec v - \vec v_1 = \vec v - \vec n \frac{\vec v \cdot \vec n}{\|\vec n\|^2} $$)PS: 豆瓣的公式保持了一贯的风格,字都那么小,唉。
6回应 2014-09-02 19:06:56
-
ªrei (All I ever do is run (away))
~不要重载以下经常被错误重载的操作: 叉乘/分量方式的乘除法/关系运算符/向量大小 ~应尽可能地使用const成员函数 —————————————————————————————— ~当使用别人的公式或源代码时,切记要检查使用的是行向量还是列向量。 ~变换物体 ~变换坐标系 ~将物体变换一个量等价于将坐标系变换一个相反的量2014-03-26 15:54:07
-
pezy (Brevity Can Be a Virtue)
发现了和[http://book.douban.com/annotation/32032123/] 一样的问题 正确的向量投影,应该参考: [https://en.wikipedia.org/wiki/Vector_projection] 推理过程总结如下: 假设 ($\vec v$) 在 ($n$) 上的投影,平行于 ($\vec n$) 的称为 ($\vec v_1$),垂直于 ($\vec n$) 的称为 ($\vec v_2$)。 那么 \begin{eqnarray*} \vec v_1 & = & \hat n \|\vec v_1\| & = & \hat n\| \vec v\|\cos \theta & = &am... (6回应)2014-09-02 19:06:56
发现了和http://book.douban.com/annotation/32032123/ 一样的问题 正确的向量投影,应该参考: https://en.wikipedia.org/wiki/Vector_projection 推理过程总结如下: 假设 ($\vec v$) 在 ($n$) 上的投影,平行于 ($\vec n$) 的称为 ($\vec v_1$),垂直于 ($\vec n$) 的称为 ($\vec v_2$)。 那么
\begin{eqnarray*} \vec v_1 & = & \hat n \|\vec v_1\| & = & \hat n\| \vec v\|\cos \theta & = & \vec n \frac{\vec v \cdot \vec n}{\|\vec n\|^2} \end{eqnarray*}($$ \vec v_2 = \vec v - \vec v_1 = \vec v - \vec n \frac{\vec v \cdot \vec n}{\|\vec n\|^2} $$)PS: 豆瓣的公式保持了一贯的风格,字都那么小,唉。
6回应 2014-09-02 19:06:56
-
pezy (Brevity Can Be a Virtue)
发现了和[http://book.douban.com/annotation/32032123/] 一样的问题 正确的向量投影,应该参考: [https://en.wikipedia.org/wiki/Vector_projection] 推理过程总结如下: 假设 ($\vec v$) 在 ($n$) 上的投影,平行于 ($\vec n$) 的称为 ($\vec v_1$),垂直于 ($\vec n$) 的称为 ($\vec v_2$)。 那么 \begin{eqnarray*} \vec v_1 & = & \hat n \|\vec v_1\| & = & \hat n\| \vec v\|\cos \theta & = &am... (6回应)2014-09-02 19:06:56
发现了和http://book.douban.com/annotation/32032123/ 一样的问题 正确的向量投影,应该参考: https://en.wikipedia.org/wiki/Vector_projection 推理过程总结如下: 假设 ($\vec v$) 在 ($n$) 上的投影,平行于 ($\vec n$) 的称为 ($\vec v_1$),垂直于 ($\vec n$) 的称为 ($\vec v_2$)。 那么
\begin{eqnarray*} \vec v_1 & = & \hat n \|\vec v_1\| & = & \hat n\| \vec v\|\cos \theta & = & \vec n \frac{\vec v \cdot \vec n}{\|\vec n\|^2} \end{eqnarray*}($$ \vec v_2 = \vec v - \vec v_1 = \vec v - \vec n \frac{\vec v \cdot \vec n}{\|\vec n\|^2} $$)PS: 豆瓣的公式保持了一贯的风格,字都那么小,唉。
6回应 2014-09-02 19:06:56 -
ªrei (All I ever do is run (away))
~不要重载以下经常被错误重载的操作: 叉乘/分量方式的乘除法/关系运算符/向量大小 ~应尽可能地使用const成员函数 —————————————————————————————— ~当使用别人的公式或源代码时,切记要检查使用的是行向量还是列向量。 ~变换物体 ~变换坐标系 ~将物体变换一个量等价于将坐标系变换一个相反的量2014-03-26 15:54:07
-
借此测试一下豆瓣笔记的 LaTeX 公式显示功能。 注:[] 转义的 LaTeX 公式在做嵌套矩阵时显示不出来。电脑浏览器支持公式显示最好,手机浏览器有一些公式无法显示,而豆瓣 App 完全不支持公式显示。 10.6.5 从欧拉角转换到四元数 [物体-惯性四元数] 是 [惯性-物体四元数] 的共轭(P171 公式 10.25 in 左手坐标系): \(h\) heading 偏航角 (+Y) \(p\) pitch 俯仰角 (+X) \(b\) bank 滚转角 (+Z) ($${{q_{object \to inertial}...
2012-09-02 17:16:11
借此测试一下豆瓣笔记的 LaTeX 公式显示功能。
注:[] 转义的 LaTeX 公式在做嵌套矩阵时显示不出来。电脑浏览器支持公式显示最好,手机浏览器有一些公式无法显示,而豆瓣 App 完全不支持公式显示。
10.6.5 从欧拉角转换到四元数
[物体-惯性四元数] 是 [惯性-物体四元数] 的共轭(P171 公式 10.25 in 左手坐标系): \(h\) heading 偏航角 (+Y) \(p\) pitch 俯仰角 (+X) \(b\) bank 滚转角 (+Z)
($${{q_{object \to inertial}}(h,p,b) = {q_{inertial \to object}}{{(h,p,b)}^*} = }$$)($${\left( {\begin{array}{*{20}{l}} {\cos (h/2)\cos (p/2)\cos (b/2) + \sin (h/2)\sin (p/2)\sin (b/2)}\\ {\left( {\begin{array}{*{20}{l}} {\cos (h/2)\sin (p/2)\cos (b/2) + \sin (h/2)\cos (p/2)\sin (b/2)}\\ {\sin (h/2)\cos (p/2)\cos (b/2) - \cos (h/2)\sin (p/2)\sin (b/2)}\\ {\cos (h/2)\cos (p/2)\sin (b/2) - \sin (h/2)\sin (p/2)\cos (b/2)} \end{array}} \right)} \end{array}} \right)}$$)15.4.4 镜面反射分量 \({m_{gls}}\) 材质光泽度(Phong 指数) 小值 表示大而平滑的光斑,如 苹果 大值 表示小而亮的光斑,如 玻璃
\({m_{spec}}\) 材质反射颜色 小值 表示粗糙表面 大值 表示强反射面 \({S_{spec}}\) 光源的镜面反射颜色(光本身的色彩和强度) \({S_{spec}}\) 常等于漫反射颜色 \({S_{diff}}\) \(l\) 反射点指向光源的向量 \(v\) 反射点指向人眼的向量 \(n\) 反射法向量 \(r\) 光线反射向量,是 l 对 n 的镜像 Phong 镜面反射模型(公式 15.8):每次 n 变化后,需要计算 r Blinn 镜面反射模型(公式 15.10):计算 v、l 的中间标准向量 h,h 被视为常数只计算一次 Blinn 镜面反射模型 (P336):
($$h = \frac{{v + l}}{{\left\| {v + \left. l \right\|} \right.}}$$)($${C_{spec}} = {(\cos \theta )^{{m_{gls}}}}{S_{spec}} \otimes {m_{spec}} = {(n \cdot h)^{{m_{gls}}}}{S_{spec}} \otimes {m_{spec}}$$)回应 2012-09-02 17:16:11
论坛 · · · · · ·
勘误 | 来自田精神 | 2015-07-16 02:13:53 | |
3d入门者,发现此书真不错,一个人钻太枯燥,有志... | 来自jeffrey | 2 回应 | 2011-06-30 10:33:16 |
求二手书 | 来自自语 | 2010-11-23 10:19:18 | |
P138页的一个错误 | 来自幻想多 | 1 回应 | 2010-01-30 12:14:10 |
还不错 | 来自degree | 2010-01-30 12:05:08 |
这本书的其他版本 · · · · · · ( 全部4 )
-
Jones & Bartlett Learning (2002)9.2分 28人读过
-
A K Peters/CRC Press (2011)9.3分 21人读过
-
清华大学出版社 (2020)7.7分 16人读过
-
限时抢
在哪儿借这本书 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
- 编程C语言,Python等类书籍+知乎话题 (IVAN)
- 图形学与实时渲染 (atyuwen)
- 計算機圖形: 相關數學 (Milo)
- Flash 3D游戏编程开发 (新一袋苹果哥)
- 追忆那些已经被忘掉的数学 (uncutstone)
谁读这本书?
二手市场
订阅关于3D数学基础的评论:
feed: rss 2.0
1 有用 combine 2010-11-13 21:56:43
清晰了矩阵变换及其几何意义的很多概念
2 有用 羡辙 2013-04-01 09:31:49
用作reference现查公式尚可
0 有用 幸运小魔头 2011-07-05 17:24:14
终于搞懂变换矩阵了
0 有用 ndv 2013-11-05 22:50:01
入门经典,深入浅出,通俗易懂
5 有用 梦里醉逍遥 2012-02-24 16:53:22
原书可能会不错,但是这本翻译本翻译不佳,排版也差,而且还有许多错误!豆瓣上这么高的评论怎么来的?
0 有用 young40 2022-06-29 16:55:56
书还是挺好的, 耐心看总有收获. 也发现了部分错误, 读的时候要小心. 推荐有能力的看第二版的英文版, 原作者网站免费看全书. 单位四元数定义哪块, 感觉定义有问题, 第二版也没有修改.
0 有用 封辰 2021-10-16 17:28:58
快速过了一遍。在学了Gilbert线性代数,和看了闫令琪大佬的 GAMES101之后,会发现比较容易理解和有用得上的知识点,并且书中有一些C++实现代码,挺好的。
0 有用 懒猫 2021-02-06 12:46:01
经典,手边常备书籍。
0 有用 Blue Padge 2021-02-05 11:10:26
看书的过程中,我再一次意识到:大学生涯中,数学水平提高程度无限趋近于0
0 有用 口口人口 2020-09-17 14:59:39
讲矩阵、四元数那部分很容易懂。