Three.js - 确定点是否共面并将共面点映射到XY平面上

时间:2016-12-02 08:28:40

标签: javascript 3d three.js

给定一组Vector3点,我需要测试它们是否在某个任意平面上是共面的。假设它们是共面的,那么我需要将它们映射/投影到XY平面上,同时保持所有点之间的比例。

我认为这方面的数学不是很难,但我正在寻找一种简单/有效的方法来使用three.js ...

1 个答案:

答案 0 :(得分:1)

1)验证四个点位于同一平面的功能是very simple

function tripleProduct(a,b,c) {
  return a.clone().dot(
    (new THREE.Vector3()).cross(b,c)
  );
}

function _isCoPlanar(a,b,c,d) {
  var ab = b.clone().sub(a);
  var ac = c.clone().sub(a);
  var ad = d.clone().sub(a);
  return tripleProduct(ab,ac,ad) === 0;
}

You need to go through the array,并确保自第四个点以来的每个点与前三个点位于同一平面。

2)对于飞机上的投影,您可以使用projectOnPlane功能。