给定一个平面和一个立方体,我想知道它们是否相交。如果有,我也想知道:
-
它们相交形成三角形、平行四边形或六边形
- 或退化情况下的点或段
-
交点的坐标是什么
2.1。在标准参照系
2.2。在立方体的参照系
注意:
- 立方体是通过平移旋转矩阵 的
- 平面为任意
new THREE.Plane()
applyMatrix4
进行平移和旋转的new THREE.BoxGeometry(1, 1, 1)
。通过查看Three.js文档,我发现了以下内容:
Plane
有一个方法intersectBox
来判断平面是否与给定的Box3
相交。- 更重要的是,
Plane
有一个方法intersectLine
,它告诉给定的Line3与平面相交的位置。 Three.js的例子包括一个类
ConvexHull
,它从一组顶点构建一个凸多面体:new ConvexHull().setFromPoints(points).faces
所以解决这个问题的一个可能的方法是:
- 将立方体分解为12行,每条边一个,
- 检查每条线与平面的交点。如果直线相交,将交点添加到凸包
我最终没有使用凸包方法。我只是创建了所有可能的面,这要归功于交叉点上的三重嵌套循环。