我正在解决一个问题,需要随机生成凸多面体并将其放入立方体/圆柱体容器中随机选择的点而不重叠。我正在使用three.js获得图形输出。
While putting a polyhedron, how to check whether it intersects with other polyhedrons?
涉及的凸多面体只是四面体或六面体,并使用 THREE.ConvexGeometry 构造。由于我需要精确的检查,边界框是不够的,我只是用它来确保两个多面体不相交。
我做了很多研究,发现了很多复杂的理论和方法,我需要的是得到一个 bool 结果来判断两个凸多面体之间是否存在交集。 SAT (Separating Axis Theorem) in 3D
已经足够好了,但是 Three.js
似乎无法做到这一点。谁能告诉我如何以简单的方式进行此类检查,或者只是解释一下如何使用 3D SAT 进行检查?
最佳答案
您可以看看http://www.realtimerendering.com/intersections.html 。尽管该网站是 2011 年创建的,但交叉口算法在过去几年中并未发生变化。从演示中可以看出,一旦将多面体放入立方体中,它们就不会移动。因此 SAT 算法不是最佳解决方案,因为它用于移动多面体。
关于javascript - 如何在 Three.js 中检查两个凸多面体是否相交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29874791/