[3]2D物理引擎探索 – 粒子系统的延伸探究

上一篇文章中,我给出了一个相对完整的粒子引擎的模拟,那么关于粒子引擎的应用,我将在本篇文章中进行探讨。 首先,粒子系统主要应用于模拟火花、子弹(弹道)等,当然粒子系统还能有更大的作用,那就是模拟柔体(例如布料),那么这篇文章的主要内容就是关于扩展粒子系统使之能够模拟布料或类似布料的柔体。 要完成这样的模拟,首先就要谈谈粒子之间的“联系”,粒子之间只有能够相互作用或者影响,才能够模拟一个相对复杂的物体,在柔体模拟中,这种“联系”就是“弹簧”,也就是弹性联系,粒子与粒子之间通过一个“弹簧”来连接,弹簧的压缩或伸长都会制约两个粒子之间的移动,并使整个粒子系统趋向一个较为稳定的状态。 下图展示的就是两个粒子通过弹簧联系的示意图: 弹簧的特点就是,弹簧对物体所施加的力,只取决于弹簧的伸长(压缩)量的大小,换句话说,只要知道被联系的两者的间距有多大,就可以十分方便的获取主体粒子受到的来自其它粒子制约的力的大小。 用这张图来进行说明,假设弹簧的弹性系数为k,弹簧原始长度(无压缩或伸长)为x0: A粒子(主...

[2]2D物理引擎探索 – 粒子引擎

在上一篇文章中,给出了2Gram的向量类,现在对上次给出的向量类进行完善,并将补充公布于此。 鉴于这是一次阶段性的更新,故制作了一个Demo,提供下载,下面是两个截图 下面这张图展示的似乎是能够流畅运行的极限。鉴于Demo本身编写仓促,效能不高。仅供参考 引擎精度控制 [crayon-5a0f12c7b87d9044851565/] [crayon-5a0f12c7b87de592983784/] 核心类 [crayon-5a0f12c7b87e0324275998/] [crayon-5a0f12c7b87e2778114360/] 粒子类 [crayon-5a0f12c7b87e6798834933/] 粒子类 成员定义 [crayon-5a0f12c7b87e8103251518/] [crayon-5a0f12c7b87e9235599554/] 牵引文件 [crayon-5a0f12c7b87ec788685314/] [crayon-5a0f12c7b

[1]2D物理引擎探索 – 2D向量类

该引擎被命名为 2Gram 两克 这里给出2D向量类的源代码 需要包含的文件结构: [crayon-5a0f12c7b8a81410441925/] 代码编写语言:C++ 代码所属命名空间:_2Gram 精度控制文件 [crayon-5a0f12c7b8a85035270216/] [crayon-5a0f12c7b8a87396734672/] 核心代码文件 [crayon-5a0f12c7b8a89031133974/] [crayon-5a0f12c7b8a8a776561992/] 参考书籍:Ian Millington [2007].GAME PHYSICS ENGINE DEVELOPMENT ...