在Three.js中计算立方体与平面的交点



给定一个平面和一个立方体,我想知道它们是否相交。如果有,我也想知道:

  1. 它们相交形成三角形、平行四边形或六边形

    • 或退化情况下的点或段
  2. 交点的坐标是什么

    2.1。在标准参照系

    2.2。在立方体的参照系

注意:

  • 立方体是通过平移旋转矩阵
  • applyMatrix4进行平移和旋转的new THREE.BoxGeometry(1, 1, 1)
  • 平面为任意new THREE.Plane()

通过查看Three.js文档,我发现了以下内容:

  • Plane有一个方法intersectBox来判断平面是否与给定的Box3相交。
  • 更重要的是,Plane有一个方法intersectLine,它告诉给定的Line3与平面相交的位置。
  • Three.js的例子包括一个类ConvexHull,它从一组顶点构建一个凸多面体:
new ConvexHull().setFromPoints(points).faces

所以解决这个问题的一个可能的方法是:

  1. 将立方体分解为12行,每条边一个,
  2. 检查每条线与平面的交点。如果直线相交,将交点添加到凸包

我最终没有使用凸包方法。我只是创建了所有可能的面,这要归功于交叉点上的三重嵌套循环。

最新更新