【发布时间】:2020-11-14 20:29:48
【问题描述】:
我正在编写一个带有行星(点)的 N 体模拟器。我已经让它工作了,但仍然有很多可能的优化,其中之一是计算点之间的距离一次并将它们存储在一个数组中。我可以使用 2d 数组(需要转换为 1d,因为 GPU 不支持 2d 数组)但是有两个问题:
- 模拟将限制为 √2147483647(最大整数值)行星 = 46340 个行星,因为数组的大小为 n^2(n 是行星的数量)
- 很多距离会重复(0 到 1 之间的距离与 1 到 0 之间的距离相同)
要获得唯一连接的数量,公式为:D = (n*(n-1))/2
但是现在我遇到了一个问题:如何在给定两个行星 id-s (x,y) 的距离数组中获取索引。行星 0 和 1 之间的距离指数为 0, 0-2 -> 1, 1-2 -> 2...
【问题讨论】: