我正在研究一个问题,需要随机生成并将凸多面体放入随机选取的点而不重叠的立方体/圆柱体容器中。我正在使用three.js来获取图形输出。如何检查Three.js中的两个凸多面体是否相互交叉?
,而把一个多面体,如何检查是否有其他的多面体相交?
涉及的凸多面体是简单的四面体或六面体,并使用THREE.ConvexGeometry构造。由于我需要一个精确的检查,边界框是不够的,我只是用它来确保两个多面体不相交。
我做了很多研究,发现了许多复杂的理论和方法,我需要的是获得一个布尔结果,告诉两个凸多面体之间是否存在相交。 SAT (Separating Axis Theorem) in 3D
已经足够好了,但Three.js
似乎不能做到这一点。任何人都可以告诉我如何以简单的方式进行这种检查,或只是解释如何在3D中使用SAT?
呦要准确,你可以把两个对象为对象,比较这两个顶点,法线多边形位置上everyframe?你需要重复遍历每个顶点,也许只需要添加一点点空间,这样就不需要精确的了。 – Careen
没有必要在每一帧都精确地对待,现在我只需要检查多边形是什么创建。当找到交点时,我需要确定它。我确信[SAT](http://www.dyn4j.org/2010/01/sat/)可以在2d和3d中执行此操作,因此您可以查看它。 @Careen –
但是我怎样才能确保新的网格不与现有的网格相交?即使要创建的多边形的新随机位置和所有顶点不在其中一个现有多边形中,多边形的边仍有机会与其他对象相交。 @Careen –