书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5
总目录
第 5 章 物理函数库
1、目录
- 5.1 Box2D及其适用性
- 5.2 获取Processing中的Box2D
Processing 安装外部库 Box2D实操 - 5.3 Box2D基础
- 5.4 生活在Box2D的世界
- 5.5 创建一个Box2D物体
- 5.6 三要素:物体、形状和夹具
- 5.7 Box2D和Processing的结合(1)
Box2D和Processing的结合(2) - 5.8 固定的Box2D对象
- 5.9 弯曲的边界
- 5.10 复杂的形状
- 5.11 Box2D关节
旋转关节
鼠标关节 - 5.12 回到力的话题
- 5.13 碰撞事件
- 5.14 小插曲:积分法
- 5.15 toxiclibs的Verlet Physics物理库
构建toxiclibs的物理世界 - 5.16 toxiclibs中的粒子和弹簧
- 5.17 整合代码:一个简单的交互式弹簧
- 5.18 相连的系统I:绳子
- 5.19 相连的系统II:力导向图
- 5.20 吸引和排斥行为
2、回顾
- 1.学习物理世界中的一些概念,比如什么是向量,什么是力,以及什么是波。
- 2.理解这些概念背后的数学和算法原理。
- 3.用面向对象方法实现这些算法。
我们通过这些活动开发了很多运动模拟程序,借此能随心所欲地构建虚拟物理世界(无论是现实的,还是想象的世界)。
- 计算机图形学和编程领域有很多现成代码可用于模拟,只要用谷歌搜索关键词“open-source physics engine”(开源物理引擎),你就能找到丰富的代码库。
3、问题
如果用现成的代码库就能完成物理模拟,为何还要花时间学习算法的实现过程?
尽管很多物理函数库能提供现成的物理实现(包括一些高级的物理学原理),但在使用它们之前,我们仍需从基础开始学习,原因有很多:
- 第一,如果没有向量、力和三角函数的基础知识作为铺垫,我们就无法读懂库的文档;
- 第二,尽管库会替我们完成数学运算,但它并不会简化代码,后面我们会看到,理解物理函数库的工作原理需要花费很多精力,学会如何使用它也不是一件容易的事;
- 最后,有了这些基础知识,如果你愿意深入探究,完全可以按照自己的意愿开发和模拟可视化程序,最终达成的效果也可以媲美这些物理函数库。
- 尽管库的作用很大,但它的功能有限,在用Processing编程时,你需要知道何时在限制中行事,何时突破限制。
4、两个开源物理库
- Box2D
- toxiclibs中的VerletPhysics引擎
学习这些库的优缺点,以及在项目中采用它们的原因。