我有一个由两个三维 vector 组成的“盒子”。一个用于前左下角,一个用于后右上角。
有没有简单的方法来检查第三个三维 vector 是否在这个“盒子”内的任何地方?
首先我写了类似(伪)的东西:
p = pointToCompare;
a = frontLowerLeft;
b = backUpperRight;
if(p.x >= a.x && p.x <= b.x && p.y >= a.y ...
但这只有在所有坐标都为正时才有效,但并非总是如此。我应该像上面那样做,还是有更好/更简单的方法来做这个计算?
如果您想知道,这就是 Vector 以及我正在使用的方法:http://www.jmonkeyengine.com/doc/com/jme/math/Vector3f.html
最佳答案
如果你想让它更健壮一点,你可以让它对角的位置不变:
if (a.x <= p.x && p.x <= b.x || b.x <= p.x && p.x <= a.x) {
// similar to the y- and z-axes.
}
一个更直观(但稍微慢一些)的变体是在每个轴上使用最小值/最大值:
if (Math.min(a.x, b.x) <= p.x && p.x <= Math.max(a.x, b.x)) {
// ...
}
关于java - 检查一个 vector 是否在两个 vector 之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4117564/