前面4章,我们学习了以下内容:
  • 学习物理世界中的一些概念,比如什么是向量,什么是力,以及什么是波。
  • 理解这些概念背后的数学和算法原理。
  • 用面向对象方法实现这些算法。

我们通过这些活动开发了很多运动模拟程序,借此能随心所欲地构建虚拟物理世界(无论是现实的,还是想象的世界)。计算机图形学和编程领域有很多现成代码可用于模拟,只要用谷歌搜索关键词“open-source physics engine”(开源物理引擎),你就能找到丰富的代码库。

▶️运行示例代码

 

 

如果用现成的代码库就能完成物理模拟,为何还要花时间学习算法的实现过程?

尽管很多物理函数库能提供现成的物理实现(包括一些高级的物理学原理),但在使用它们之前,我们仍需从基础开始学习,原因有很多:

  • 第一,如果没有向量、力和三角函数的基础知识作为铺垫,我们就无法读懂库的文档;
  • 第二,尽管库会替我们完成数学运算,但它并不会简化代码,后面我们会看到,理解物理函数库的工作原理需要花费很多精力,学会如何使用它也不是一件容易的事;
  • 最后,有了这些基础知识,如果你愿意深入探究,完全可以按照自己的意愿开发和模拟可视化程序,最终达成的效果也可以媲美这些物理函数库。
尽管库的作用很大,但它的功能有限,在用p5.js编程时,你需要知道何时在限制中行事,何时突破限制。

本章致力于讲解两个开源物理库,学习这些库的优缺点,以及在项目中采用它们的原因。
  • planck.js(基于Box2D的算法)
  • toxiclibs中的VerletPhysics引擎


Last modified: Tuesday, 8 November 2022, 11:43 AM