javascript - 如何在 Three.js 中检查两个凸多面体是否相交?

标签 javascript 3d three.js intersection

我正在解决一个问题,需要随机生成凸多面体并将其放入立方体/圆柱体容器中随机选择的点而不重叠。我正在使用获得图形输出。

A demo.

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/

相关文章:

javascript - Redux:在 reducer 中过滤数据数组的正确方法是什么?

javascript - 为什么这个侧边栏数据不会发送到 ajax,为什么 slider 值显示 ui 未定义?

javascript - 如何在网页中将存储在数据库中的图像显示为 blob

javascript - 如何在 Three.js 中为camera.zoom设置动画

javascript - 使用 Three.js 对几何体应用平移、旋转和缩放后如何获取顶点位置?

Javascript 对象属性未更新变量集

javascript - 如何在 AngularJS/Bootstrap 中将变量传递给数据目标 data-toggle

c++ - 每帧调用 glGetUniformLocation()

c++ - 计算 3D 对象和点之间的角度

C++ 3d游戏开发