3D数学基础:图形和游戏开发(第2版)pdf下载pdf下载

3D数学基础:图形和游戏开发(第2版)百度网盘pdf下载

作者:
简介:本篇主要提供3D数学基础:图形和游戏开发(第2版)pdf下载
出版社:
出版时间:2020-05
pdf下载价格:9.00¥


预览


内容介绍

编辑推荐

本书填补了其他三维游戏开发类书籍在图形、线性代数、模拟和编程等方面留下的空白。本书是学习和掌握三维视频游戏开发技术的一本不可多得的优秀入门读物。


内容简介

  《3D数学基础:图形和游戏开发(第2版)》详细阐述了在计算机图形学中与数学相关的基本解决方案,主要包括笛卡儿坐标系、矢量、多个坐标空间、矩阵简介、矩阵和线性变换、矩阵详解、极坐标系、三维旋转、几何图元、二维图形的数学主题、力学知识以及三维曲线等内容。此外,该书还提供了相应的示例,以帮助读者进一步理解相关方案的实现过程。
  《3D数学基础:图形和游戏开发(第2版)》适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。

内页插图

目录

目 录
第1章 笛卡儿坐标系
1.1 一维数学
1.2 二维笛卡儿空间
1.2.1 示例:假设的Cartesia城市
1.2.2 任意二维坐标空间
1.2.3 使用笛卡儿坐标指定二维中的位置
1.3 三维笛卡儿空间
1.3.1 新增维度和轴
1.3.2 在三维中指定位置
1.3.3 左手与右手坐标空间
1.3.4 本书中使用的一些重要约定
1.4 一些零散的基础知识介绍
1.4.1 求和与求积的表示法
1.4.2 区间符号
1.4.3 角度、度数和弧度
1.4.4 三角函数
1.4.5 三角函数的恒等式
1.5 练习
第2章 矢量
2.1 向量和其他无聊东西的数学定义
2.2 矢量的几何定义
2.3 使用笛卡儿坐标指定矢量
2.3.1 作为位移序列的矢量
2.3.2 零矢量
2.4 矢量与点
2.4.1 相对位置
2.4.2 点与矢量之间的关系
2.4.3 一切都是相对的
2.5 负矢量
2.5.1 正式线性代数规则
2.5.2 几何解释
2.6 标量和矢量的乘法
2.6.1 正式线性代数规则
2.6.2 几何解释
2.7 矢量的加法和减法
2.7.1 正式线性代数规则
2.7.2 几何解释
2.7.3 从一点到另一点的位移矢量
2.8 矢量大小
2.8.1 正式线性代数规则
2.8.2 几何解释
2.9 单位矢量
2.9.1 正式线性代数规则
2.9.2 几何解释
2.10 距离公式
2.11 矢量点积
2.11.1 正式线性代数规则
2.11.2 几何解释
2.12 矢量叉积
2.12.1 正式线性代数规则
2.12.2 几何解释
2.13 线性代数恒等式
2.14 练习
第3章 多个坐标空间
3.1 为什么需要多个坐标空间?
3.2 一些有用的坐标空间
3.2.1 世界空间
3.2.2 对象空间
3.2.3 相机空间
3.2.4 直立空间
3.3 基矢量和坐标空间转换
3.3.1 双重视角
3.3.2 指定坐标空间
3.3.3 基矢量
3.4 嵌套坐标空间
3.5 针对直立空间的再解释
3.6 练习
第4章 矩阵简介
4.1 矩阵的数学定义
4.1.1 矩阵维度和表示法
4.1.2 方形矩阵
4.1.3 作为矩阵的矢量
4.1.4 矩阵转置
4.1.5 矩阵与标量相乘
4.1.6 两个矩阵相乘
4.1.7 矢量和矩阵相乘
4.1.8 行与列矢量
4.2 矩阵的几何解释
4.3 线性代数的宏大图景
4.4 练习
第5章 矩阵和线性变换
5.1 旋转
5.1.1 在二维中的旋转
5.1.2 围绕主轴的三维旋转
5.1.3 围绕任意轴的三维旋转
5.2 缩放
5.2.1 沿主轴缩放
5.2.2 任意方向的缩放
5.3 正交投影
5.3.1 投影到主轴或主平面上
5.3.2 投影到任意线或平面上
5.4 反射
5.5 错切
5.6 组合变换
5.7 变换的分类
5.7.1 线性变换
5.7.2 仿射变换
5.7.3 可逆变换
5.7.4 保持角度的变换
5.7.5 正交变换
5.7.6 刚体变换
5.7.7 变换类型总结
5.8 练习
第6章 矩阵详解
6.1 矩阵的行列式
6.1.1 关于2×2和3×3矩阵的行列式
6.1.2 子矩阵行列式和余子式
6.1.3 任意n×n矩阵的行列式
6.1.4 行列式的几何解释
6.2 逆矩阵
6.2.1 经典伴随矩阵
6.2.2 逆矩阵—正式线性代数规则
6.2.3 逆矩阵—几何解释
6.3 正交矩阵
6.3.1 正交矩阵—正式线性代数规则
6.3.2 正交矩阵—几何解释
6.3.3 矩阵的正交化
6.4 关于4×4齐次矩阵
6.4.1 关于四维齐次空间
6.4.2 关于4×4平移矩阵
6.4.3 一般仿射变换
6.5 关于4×4矩阵和透视投影
6.5.1 针孔相机
6.5.2 透视投影矩阵
6.6 练习
第7章 极坐标系
7.1 关于二维极坐标空间
7.1.1 使用二维极坐标定位点
7.1.2 别名
7.1.3 关于二维中笛卡儿坐标和极坐标之间的变换
7.2 为什么有人会使用极坐标?
7.3 关于三维极坐标空间
7.3.1 圆柱坐标
7.3.2 球面坐标
7.3.3 在三维虚拟世界中有用的一些极坐标约定
7.3.4 球面坐标的别名
7.3.5 球面坐标和笛卡儿坐标之间的转换
7.4 使用极坐标指定矢量
7.5 练习
第8章 三维旋转
8.1 “定向”含义探微
8.2 矩阵形式
8.2.1 矩阵的选择
8.2.2 方向余弦矩阵
8.2.3 矩阵形式的优点
8.2.4 矩阵形式的缺点
8.2.5 矩阵形式小结
8.3 欧拉角
8.3.1 欧拉角约定
8.3.2 其他欧拉角约定
8.3.3 欧拉角的优点
8.3.4 欧拉角的缺点
8.3.5 欧拉角小结
8.4 轴-角和指数映射表示方式
8.5 四元数
8.5.1 四元数表示法
8.5.2 这四个数字的意思
8.5.3 四元数变负
8.5.4 单位四元数
8.5.5 四元数的大小
8.5.6 四元数的共轭和逆
8.5.7 四元数乘法
8.5.8 四元数的“差”
8.5.9 四元数点积
8.5.10 四元数的对数、指数和标量乘法
8.5.11 四元数指数
8.5.12 四元数插值
8.5.13 四元数的优缺点
8.5.14 作为复数的四元数
8.5.15 四元数概要
8.6 方法比较
8.7 表示方式之间的转换
8.7.1 将欧拉角转换为矩阵
8.7.2 将矩阵转换为欧拉角
8.7.3 将四元数转换为矩阵
8.7.4 将矩阵转换为四元数
8.7.5 将欧拉角转换为四元数
8.7.6 将四元数转换为欧拉角
8.8 练习
第9章 几何图元
9.1 表示技术
9.2 直线和光线
9.2.1 光线
9.2.2 直线的特殊二维表示
9.2.3 表示方式之间的转换
9.3 球体和圆形
9.4 包围盒
9.4.1 关于AABB的表示方式
9.4.2 计算AABB
9.4.3 关于AABB与包围球
9.4.4 变换AABB
9.5 平面
9.5.1 平面方程:平面的隐式定义
9.5.2 使用3个点定义一个平面
9.5.3 超过3个点的“最佳拟合”平面
9.5.4 点到平面的距离
9.6 三角形
9.6.1 表示法
9.6.2 三角形的面积
9.6.3 重心空间
9.6.4 计算重心坐标
9.6.5 特殊点
9.7 多边形
9.7.1 简单多边形和复杂多边形
9.7.2 凸多边形和凹多边形
9.7.3 三角剖分和扇形分割
9.8 练习
第10章 三维图形的数学主题
10.1 图形工作原理
10.1.1 两种主要的渲染方法
10.1.2 描述表面特性:BRDF
10.1.3 颜色和辐射度测量简介
10.1.4 渲染方程
10.2 关于三维视图
10.2.1 指定输出窗口
10.2.2 像素宽高比
10.2.3 视锥体
10.2.4 视野和缩放
10.2.5 正交投影
10.3 坐标空间
10.3.1 模型、世界和相机空间
10.3.2 裁剪空间和裁剪矩阵
10.3.3 裁剪矩阵:准备投影
10.3.4 裁剪矩阵:应用缩放并准备裁剪
10.3.5 屏幕空间
10.3.6 坐标空间概述
10.4 多边形网格
10.4.1 索引三角网格
10.4.2 表面法线
10.5 纹理映射
10.6 标准局部照明模型
10.6.1 标准照明公式:概述
10.6.2 镜面反射分量
10.6.3 漫反射分量
10.6.4 环境光和发光分量
10.6.5 照明方程:综合考虑各分量
10.6.6 标准模型的局限性
10.6.7 平面着色和Gouraud着色
10.7 光源
10.7.1 标准抽象光类型
10.7.2 光衰减
10.7.3 关于Doom风格体积光
10.7.4 预先计算的照明
10.8 骷髅动画
10.9 凹凸映射
10.9.1 切线空间
10.9.2 计算切线空间基矢量
10.10 实时图形管道
10.10.1 缓冲区
10.10.2 传递几何体
10.10.3 顶点级别的操作
10.10.4 裁剪
10.10.5 背面剔除
10.10.6 光栅化、着色和输出
10.11 一些HLSL示例
10.11.1 贴花着色和HLSL基础知识
10.11.2 基础的每个像素Blinn-Phong照明
10.11.3 使用Gouraud着色算法
10.11.4 凹凸映射
10.11.5 蒙皮网格
10.12 深入阅读建议
10.13 练习
第11章 力学1:线性运动学和微积分
11.1 概述
11.1.1 忽略的东西
11.1.2 关于宇宙的一些有用的谎言
11.2 基本数量和单位
11.3 平均速度
11.4 瞬时速度和导数
11.4.1 极限参数和导数的定义
11.4.2 导数示例
11.4.3 通过定义计算导数
11.4.4 导数的表示法
11.4.5 一些求导法则和快捷方式
11.4.6 泰勒级数的一些特殊函数的导数
11.4.7 链式法则
11.5 加速度
11.6 恒定加速度下的运动
11.7 积分
11.7.1 积分的例子
11.7.2 导数与积分之间的关系
11.7.3 微积分小结
11.8 匀速圆周运动
11.8.1 平面内的匀速圆周运动
11.8.2 三维中的匀速圆周运动
11.9 练习
第12章 力学2:线性和旋转动力学
12.1 牛顿的3个基本定律
12.1.1 牛顿的前两个定律:力与质量
12.1.2 惯性参考系
12.1.3 牛顿第三定律
12.2 一些简单的力定律
12.2.1 重力
12.2.2 摩擦力
12.2.3 弹簧力
12.3 动量
12.3.1 动量守恒
12.3.2 质心
12.4 冲击力和碰撞
12.4.1 完全非弹性碰撞
12.4.2 一般碰撞响应
12.4.3 关于Dirac Delta
12.5 旋转动力学
12.5.1 旋转运动学
12.5.2 关于二维旋转动力学
12.5.3 关于三维旋转动力学
12.5.4 与旋转的碰撞响应
12.6 实时刚体模拟器
12.6.1 物理引擎状态变量
12.6.2 高级概述
12.6.3 欧拉积分
12.6.4 旋转的积分
12.7 深入阅读建议
12.8 练习
第13章 三维曲线
13.1 参数多项式曲线
13.1.1 参数曲线
13.1.2 多项式曲线
13.1.3 矩阵表示法
13.1.4 两种简单的曲线
13.1.5 单项式端点
13.1.6 速度和切线
13.2 多项式插值
13.2.1 艾特肯的算法
13.2.2 拉格朗日基多项式
13.2.3 多项式插值汇总
13.3 埃尔米特曲线
13.4 贝塞尔曲线
13.4.1 关于de Casteljau算法
13.4.2 伯恩斯坦基多项式
13.4.3 贝塞尔导数及其与埃尔米特形式的关系
13.5 细分
13.5.1 细分单项式曲线
13.5.2 细分贝塞尔曲线
13.6 样条曲线
13.6.1 游戏规则
13.6.2 节点
13.7 埃尔米特和贝塞尔样条曲线
13.8 连续性
13.8.1 参数连续性
13.8.2 几何连续性
13.8.3 曲线平滑度
13.9 自动切线控制
13.9.1 Catmull-Rom样条
13.9.2 TCB样条
13.9.3 端点条件
13.10 练习
第14章 后记
14.1 接下来做什么
14.2 练习
附录A 几何测试
A.1 在二维隐式直线上的最近点
A.2 参数化光线上的最近点
A.3 平面上的最近点
A.4 圆或球体上的最近点
A.5 轴向对齐的包围盒中的最近点
A.6 相交测试
A.7 在二维中两条隐式直线的交点
A.8 在三维中两条光线的交点
A.9 光线和平面的交点
A.10 轴向对齐的包围盒与平面的交点
A.11 个平面的交点
A.12 光线与圆或球体的交点
A.13 两个圆或球的交点
A.14 球体与轴向对齐的包围盒的交点
A.15 球体与平面的交点
A.16 光线与三角形的交点
A.17 两个AABB的交点
A.18 光线与AABB的交点
附录B 练习答案
B.1 第1章
B.2 第2章
B.3 第3章
B.4 第4章
B.5 第5章
B.6 第6章
B.7 第7章
B.8 第8章
B.9 第9章
B.10 第10章
B.11 第11章
B.12 第12章
B.13 第13章
参考文献

前言/序言

前 言

头炮要打响,顺序不重要。

—Who博士,Meglos(1980)


本书适宜的读者范围

本书是关于3D数学、三维空间的几何和代数的入门教材。它旨在告诉你如何使用数学描述三维中的物体及其位置、方向和轨迹。这不是一本关于计算机图形学、模拟,甚至计算几何的书,但是,如果读者打算研究这些科目,那么肯定需要这里的信息。

这是一本适宜视频游戏程序开发人员阅读的图书。虽然本书假定大多数读者都是为了编写视频游戏而学习,但我们期待更广泛的受众,并且在设计这本书的体例时也考虑到了不同的受众。如果你是程序开发人员或有兴趣学习如何制作视频游戏,欢迎加入!如果你没有达到这些标准,那么你在这里仍然可以收获很多。我们已经尽一切努力使本书对设计师和技术美工也很有用。虽然本书中有一些代码片段,但即使对于非程序开发人员来说,它们也很容易阅读(希望如此)。最重要的是,虽然你需要先理解相关的概念才能理解代码,但是反过来并不成立。我们使用代码示例来说明如何在计算机上实现创意,而不是解释这些创意本身。

本书的标题有“游戏开发”字样,但我们所涵盖的大量材料适用于视频游戏之外。实际上,任何想要模拟、渲染或理解三维世界的人都会觉得这本书很有用。虽然我们确实尝试提供来自视频游戏开发世界的一些激动人心的示例,因为这是我们的专业领域以及主要目标受众,但是,如果完成的最后一个游戏是Space Quest,那么你将不会被排除在外。 如果你的兴趣在于比视频游戏更“成熟”的东西,请放心,这本书中没有关于一枪爆头或残肢断臂之类的视频游戏中的具体示例,也不会讨论如何让血腥画面恰到好处之类的问题。

阅读本书的理由

本书有许多特色,包括其主题、方法、作者和写作风格等。

独特的主题

这本书填补了其他三维游戏开发类书籍在图形、线性代数、模拟和编程等方面留下的空白。这是一本入门教材,这意味着我们的写作重点是提供对基本三维概念的全面阐述—这些主题在一些快速入门网页中通常都会被掩盖,或者降级到其他书籍的附录中,因为有些内容可能会被作者默认为读者已经掌握的基础知识。但是,我们发现这些主题往往是初学者的关键点!在某种程度上,这本书是将图形、物理和曲线等方面的书籍黏合在一起的镜像。我们将首先全面介绍数学基础知识,然后给出高级应用领域的简明描述。

本书确实试图为初学者提供比较平缓的入门通道,但这并不意味着我们将永远行驶在慢车道上。事实上,这里有很多资料,传统上被认为是“先进的”,并仅在高年级或研究生课程中教授。这些主题的专业性超过了它们的难度,并且它们最近成为需要早期教授的重要先决条件,这也是推动对这类图书的需求的一部分动力。

独特的方法

所有作者都认为,为了给读者最好的阅读体验,需要在一本正经地讲授内容和插科打诨之间取得完美的平衡,我们也不例外。但是,我们也意识到,有些认真的读者可能会不认同我们的这种自我评价,他们会觉得这本书不太正式。其实,我们专注于明显的解释和直觉的建立,这样做有时也是以牺牲严谨为代价的。我们的目标是简化,但不过度简化。我们将引领读者进入一条能避开巨魔和恶龙的道路,从而顺利抵达终点。但是,我们也知道读者最终将需要自己穿越山林,因此,在到达我们指引的目的地之后,我们还将转过身来指出危险所在,以帮助读者独闯山林。当然,本书也无法做到面面俱到,所以,有些资料性的工具建议读者通过其他来源获得,这就好比我们已经告诉你闯荡山林的基础知识,但是如果打算扎根山林,则仍然应该咨询当地人以获得更多外人无法通晓的知识,避免可能遇到的危险。这并不是说我们认为严谨是不重要的,我们只是认为在确定了宏观的直觉之后更容易获得严谨的思考和方法,而不是用处理个别案例所需的定义和公理来进行每一项的讨论。坦率地说,现在读者可以在wikipedia.org或Wolfram MathWorld(mathworld. wolfram.com)上免费阅读到很多简明而正式的演示文稿,所以我们认为任何一本书都不会过多地依赖于定义、公理、证明和边缘情况,特别是主要针对工程师的入门资料。

独特的作者

我们的综合经验使得我们可以将学术权威理论与在开发人员战壕中的实用建议结合在一起。Fletcher Dunn拥有15年的专业游戏编程经验,在各种游戏平台上拥有大约十几款游戏。他曾在达拉斯的Terminal Reality工作,担任首席程序员,他是Infernal引擎的架构师和BloodRayne的首席程序员。他曾担任芝加哥Wideload Games的Walt Disney公司的技术总监,以及IGN的E3 2010年度家庭游戏Disney Guilty Party的首席程序员。他目前在华盛顿州贝尔维尤的Valve Software工作。但迄今为止让他声名鹊起的就是Call of Duty:Modern Warfare 2(中文版名称《使命召唤:现代战争2》)中的Dunn(邓恩)下士的同名。

Ian Parberry博士在学术研究和教学方面拥有超过25年的经验。这是他的第六本书,也是他的第三本关于游戏编程的书。他目前是北德克萨斯大学计算机科学与工程系的终身教授,也是知名的高等教育游戏编程专业先锋人物之一,自1993年以来一直在北德克萨斯大学教授游戏编程课程。

独特的写作风格

我们希望读者能喜欢阅读这本数学书有两个原因。最重要的是,我们希望读者能在本书的学习过程中,了解到感兴趣的内容其实也是很有趣的;其次,我们希望读者喜欢阅读本书,就像喜欢阅读文学作品一样。当然我们不奢望能和马克?吐温在同一个层次,或者本书能够成为像The Hitchhiker’s Guide to the Galaxy(中文版译名《银河系漫游指南》)之类的经典之作,但做人做事总要满怀抱负不是?话说回来,无论写作风格如何,对于本书来说,第一原则应该是明确交流有关电子游戏的数学知识。

阅读本书的基础

我们已经尝试让尽可能多的受众都可以阅读这本书。但是,这一努力也不应该超越刚才讲过的第一原则,所以,我们期望读者具备以下基本数学技能:

? 掌握代数表达式、分数和基本代数定律,例如结合律、分配律和二次方程。

? 理解变量是什么、函数是什么,并且知道如何绘制函数的图形等。

? 了解一些非常基本的二维欧几里得几何,例如点是什么、线是什么、平行线和垂直线意味着什么等。在一些地方使用了一些面积和周长的基本公式。如果你暂时忘记了,那也没关系—当你看到它们时,自然会认出它们。

? 事先能掌握三角学是最好的。我们在本书前面的章节也对三角学进行了一些简要的复习,只是没有给出解释而已。

? 之前接触过微积分的读者会有一些优势,但是我们将本书中对微积分的使用限制在非常基础的水平上,我们将在第 11 章中给那些没有接受过这种教育的读者提供一些基础概念。本书只需要掌握这些概念和基本定律即可。

如果读者具有一些编程知识做基础,那自然是极好的,但这并不是必需的。在一些地方,我们提供简短的代码片段,以展示如何将讨论的想法转化为代码(此外,某些过程在代码中更容易解释)。这些代码片段是非常基础性的,并且提供了很好的注释,读者只需要对C语言语法(也可用于其他几种语言)具有最基本的理解即可。大多数的技术美工或关卡设计师应该能够轻松理解这些代码片段。

章节内容概述

? 第1章将通过讲述本书其余部分所需的一些基础内容进行热身,这些内容读者可能已经掌握。本章将回顾二维和三维中的笛卡儿坐标系,并讨论如何使用笛卡儿坐标系来定位空间中的点。还包括对三角学和求和符号的快速复习。

? 第2章将介绍数学向量和几何角度的矢量,并研究点和向量(矢量)之间的重要关系。本章还将讨论许多向量运算,如何执行它们,在几何上执行它们的含义以及一些可能发现它们很有用的情况。

? 第3章将讨论坐标空间的示例以及它们如何嵌套在层次结构中。本章还将介绍基矢量和坐标空间变换的核心概念。

? 第4章将从数学和几何角度介绍矩阵,并展示矩阵如何成为线性变换背后数学的紧凑符号。

? 第5章将详细研究不同类型的线性变换及其相应的矩阵。本章还将讨论各种变换的类以及分类方法。

? 第6章将介绍一些有趣且有用的矩阵特性,如仿射变换和透视投影,并解释三维世界中四维矢量和矩阵的目的和作用。

? 第7章将讨论如何在二维和三维中使用极坐标,这样做为什么是有用的,以及如何在极坐标和笛卡儿坐标之间进行转换。

? 第8章将讨论在三维中表示方向和角位移的不同技术—欧拉角、旋转矩阵、指数映射和四元数。对于每种方法,本章解释该方法的工作原理,并介绍该方法的优缺点以及何时使用该方法。本章还显示如何在不同的表示方式之间进行转换。

? 第9章将研究一些常用的几何图元,包括直线、球体、包围盒、平面、三角形和多边形等,并讨论如何用数学方法表示和操作它们。

? 第 10 章是关于图形的快速进阶课程,涉及一些选定的理论和现代实际问题。首 先,本章将阐述关于“图形工作原理”的高级主题,从而推出渲染方程。然后,本章将介绍一些数学性质的理论主题,包括三维视图、坐标空间和多边形网格等。接下来,它将讨论两个当代主题:骨骼动画和凹凸贴图。这些主题通常是数学难度的来源,读者应该特别感兴趣。最后,本章还将简要介绍实时图形管道,演示如何在当前渲染硬件的环境下实现本章前半部分的理论。

? 第 11 章将两个相当大的主题合并为一章。它将第一学期微积分的最高级主题与 刚体运动学的讨论联系起来—如何描述和分析刚体的运动,而不必理解其原因或关注方向与旋转。

? 第 12 章将继续讨论刚体力学。它首先对经典力学进行简要的解释,包括牛顿的运动定律和惯性、质量、力和动量等基本概念。它回顾一些基本的力定律,如重力、弹簧力和摩擦力。本章还考虑到目前为止所讨论的所有线性思想的旋转类比,适当关注碰撞的重要主题。本章最后讨论使用计算机模拟刚体时出现的问题。

? 第 13 章将介绍三维中的参数化曲线。本章的前半部分解释如何以一些常见的重 要形式表示相对较短的曲线—单项式、贝塞尔和埃尔米特。下半部分涉及将这些较短的部分连接成较长的曲线(称为样条曲线)。在理解每个系统时,本章将考虑系统提供给曲线设计师的控制,如何描述设计师制作的曲线并重新创建曲线,以及如何使用这些控制构建具有特定属性的曲线等。

? 第14章将激发读者追求在视频游戏方面的成就。

? 附录A是可以对几何图元执行的各种有用测试。我们的目的是将它作为一个有用的参考,当然,即便是简单浏览一下也是很有益的。

? 附录B包含本书各章练习的所有答案。




小心,我们可不想从中吸取教训。

—摘自Bill Watterson著Calvin And Hobbes(1958—)