intersectsAABB
是Yuka js库中的一个函数,用于判断两个AABB(轴对齐包围盒)是否相交。
intersectsAABB( aabb1, aabb2 )
aabb1
:第一个AABB对象,该对象包含以下属性:
min
:一个Vector3对象,表示AABB的左下角顶点坐标。max
:一个Vector3对象,表示AABB的右上角顶点坐标。aabb2
:第二个AABB对象,该对象包含以下属性:
min
:一个Vector3对象,表示AABB的左下角顶点坐标。max
:一个Vector3对象,表示AABB的右上角顶点坐标。布尔值,表示两个AABB是否相交。
import { Vector3 } from 'three';
import { intersectsAABB } from 'yuka';
const aabb1 = {
min: new Vector3( -1, -1, -1 ),
max: new Vector3( 1, 1, 1 )
};
const aabb2 = {
min: new Vector3( -2, -2, -2 ),
max: new Vector3( 2, 2, 2 )
};
console.log( intersectsAABB( aabb1, aabb2 ) ); // true
该函数实现的主要原理是判断两个AABB的相对位置关系。如果两个AABB重叠,那么它们之间必定存在至少一对相交的平行面。因此,我们只需要判断两个AABB在 x、y、z 三个轴上的投影是否有重叠即可。如果三个轴上都有重叠,那么两个AABB就相交。