我在physics.stackexchange上问了一个类似的问题,对这个网站一无所知。
我基本上是在寻找一种有效的方法来实现引力场。
我有一个巨大的 2D 空间,里面有数千个对象。然后我需要模拟这些物体如何受到彼此重力的影响。
我认为可以将对象分类到集合中,并根据该集合检查该集合之外的每个对象,而不是其中的每个单独对象。我很快意识到这根本不可能。多个物体的引力场不能表示为一个均匀的场,只用一个质量和距离计算。
模拟中的每个对象都可以视为一个球体。我对近似值很好,只要它看起来相当现实。
我在physics.stackexchange上问了一个类似的问题,对这个网站一无所知。
我基本上是在寻找一种有效的方法来实现引力场。
我有一个巨大的 2D 空间,里面有数千个对象。然后我需要模拟这些物体如何受到彼此重力的影响。
我认为可以将对象分类到集合中,并根据该集合检查该集合之外的每个对象,而不是其中的每个单独对象。我很快意识到这根本不可能。多个物体的引力场不能表示为一个均匀的场,只用一个质量和距离计算。
模拟中的每个对象都可以视为一个球体。我对近似值很好,只要它看起来相当现实。
您可以尝试使用实现快速多极方法 (FMM) 的库,这将大大减少您需要的内存量,并降低矩阵向量乘积的复杂性到. 这很难实现,但应该有一些库。
N 体模拟的另一种算法是 Barnes-Hut,它更容易实现,并且可能还有可用的库实现。它被认为比 FMM 效率低(在渐近意义上)。
如果您的域是周期性的,也许您可以执行粒子网格 Ewald summation 之类的操作?(我对这种方法知之甚少。)