在 Android 上从 OpenGL ES 中的点到体积的碰撞/距离

Collision / distance to volumes from point in OpenGL ES on Android

is user inside volume OpenGL ES Java Android 我有一个显示空域的 opengl 渲染器。

我需要计算已经在 float[3] 中转换的我的位置是否在许多体积内。

我也想计算最近体积的距离

体积是沿 z 轴拉伸的随机形状。

最有效的算法是什么?

我不想使用外部库。

你这里有一个 Nearest Neighbor Search problem。由于您的网格是不变的并且不会改变,您可能应该使用 space 分区算法。这是一个很大的话题,但总之,您通常需要使用树结构并将所有要放入各个树节点的对象排序。您需要预先计算树本身。网上有很多关于 space 分区的书籍和教程,您也可以查看 Doom、Quake 等 id Software 产品的源代码,了解这种算法(至少是 BSP)被使用。每种算法的效率取决于你拥有什么和你需要什么。例如,使用 BSP 树,您可以将对象从最近到最远排序,这样您就可以快速找到所需的对象。