【发布时间】:2018-07-02 23:18:23
【问题描述】:
我有一个连续的 3d 空间,由 4 个平面的内部空间定义,这些平面在平行线处相交(无限长的矩形) - 我们称之为“A”。然后在模型中,我有一堆封闭的凸形 3d 形状,它们可能会或可能不会重叠到空间“A”中——让我们称它们中的每一个为“B”。我正在寻找的是一种计算效率尽可能高的算法过程,以破译任何“B”形状是否与“A”重叠。
*每个“B”形状都由它的顶点、边和带有平面的面等定义......以及它们之间的链接。
*如果其中一些没有意义,我可以画一些涂鸦...
到目前为止,我针对“A”检查每个“B”形状的过程如下:
检查 b 的任何点是否在 A 的所有 4 个平面内 - 如果是 => 重叠(如果它们都落在相同的外部空间 => 不重叠)
检查 a 的任何平行线是否与 b 的任何面相交 - 如果是 => 重叠。
检查 b 的任何边是否与 A 的 4 个面中的任何一个相交 - 如果是 => 重叠。
我还想我可以为每个“B”形状创建一个带有中心点和半径的近似边界圆,以首先检查以快速消除远处的“B”形状...
** 对于第 2 部分和第 3 部分,我使用了一个函数来检查边是否与 3d 对象相交。这通过将 2 个点与构成对象的每个平面进行比较,以查看它们是否是相对的两侧,然后如果是,则找到平面交点并检查该交点是否在 3d 对象内。
这似乎可行,但我想看看是否有更好或更快的方法来破解同一个坚果?也许我错过了一些明显的东西......
谢谢
【问题讨论】:
标签: algorithm 3d geometry collision-detection computational-geometry