如果我们有非轴对齐框,我们怎样才能最好地检查一个点是否位于其中? (我正在使用three.js,所以那里的任何实用程序都可以提供帮助.Tree.js包含边界框概念,但这是轴对齐的边界框)
答案 0 :(得分:1)
如果您的框是旋转,平移和缩放的THREE.BoxGeometry,那么您可以使用其变换矩阵m
来查找它是否与您的点v
相交:
v
,方框与m
v
是否在变换后的框内(现在是轴对齐)以下是代码:
var box = <Your non-aligned box>
var point = <Your point>
box.geometry.computeBoundingBox(); // This is only necessary if not allready computed
box.updateMatrixWorld(true); // This might be necessary if box is moved
var boxMatrixInverse = new THREE.Matrix4().getInverse(box.matrixWorld);
var inverseBox = box.clone();
var inversePoint = point.clone();
inverseBox.applyMatrix(boxMatrixInverse);
inversePoint.applyMatrix4(boxMatrixInverse);
var bb = new THREE.Box3().setFromObject(inverseBox);
var isInside = bb.containsPoint(inversePoint);
这是一个正在运行的演示:https://jsfiddle.net/holgerl/q0z979uy/