【发布时间】:2014-07-02 11:02:42
【问题描述】:
问题陈述:使用八叉树找到每个粒子最近的 GRID ID。
图[1]:
图[2]:
我有一个粒子系统(~6k,可移动),我需要检查哪个网格点(刚性;在图片中)最接近。有人建议我选择 Octree,因为它对于 3D 网格来说速度很快。
这是递归八叉树获取网格最近网格点的正确算法吗?
- 获取一个输入作为点 P 起始坐标 C(第一次是 [0,0,0])
- 起始尺寸 = [Sx, Sy, Sz]
- 获取所有 8 个中点 Mi = {M1,..,M8} 得到 Mi 和 P 的最小距离
说 M 得到 M 的起始位置为 Cn 设置大小 Sn = [Sx/8, Sy/8, Sz/8]
如果 M 和 P 的距离小于 2 * (Grid Space G):
5.1。迭代从Cn到Sn的所有网格点
5.2。打印最少作为结果
其他
6.1。设置起始坐标为Cn
6.2。设置大小为 Sn
6.3。转到 1
问题:如果粒子在边界外或接近边界,最后一次迭代会耗尽所有速度,因为它会检查所有 A x B x C。
如果您有更好的方法来解决这个问题,请提出建议。
【问题讨论】:
标签: algorithm optimization nearest-neighbor octree