Я работаю над проблемой, которая должна произвольно генерировать и выставлять выпуклые многогранники в контейнер с кубом/цилиндром в случайно выбранных точках без перекрытия. Я использую three.js, чтобы получить графический вывод.Как проверить, пересекаются ли два выпуклых многогранника друг с другом в Three.js?
Ставя многогранник, как проверить, пересекает ли она с другими многогранников?
Приведенный выпуклый многогранник представляет собой просто тетраэдр или гексаэдр и построен с использованием THREE.ConvexGeometry. Поскольку мне нужна точная проверка, ограничительной рамки недостаточно, я просто использую ее, чтобы убедиться, что два многогранника не пересекаются.
Я провел много исследований и нашел много сложных теорий и методов, мне нужно получить логический результат, который говорит, существует ли пересечение между двумя выпуклыми многогранниками. SAT (Separating Axis Theorem) в 3D
достаточно хорош, но Three.js
, похоже, не в состоянии это сделать. Может ли кто-нибудь сказать мне, как сделать этот вид проверки простым способом или просто объяснить, как это сделать с SAT в 3D?
Yo хочет точным, вы можете поместить оба объект в объект и сравнить обе вершины, нормали многоугольники позицию на everyframe? вам нужно будет циклически перебирать каждую вершину много раз и, возможно, добавить немного места, чтобы не было точно – Careen
Нет необходимости быть точным на каждом кадре, мне просто нужно проверить в настоящий момент, что многоугольник создано. Когда пересечение найдено, мне нужно, чтобы это было точно. Я уверен, что [SAT] (http://www.dyn4j.org/2010/01/sat/) может сделать это как в 2d, так и в 3d, вы можете проверить это. @Careen –
Но как я могу убедиться, что новая сетка не пересекается с существующими? Даже если новая случайная позиция и все вершины создаваемого многоугольника не находятся в одном из существующих полигонов, края многоугольника все же имеют шанс пересечь другие объекты. @Careen –