/** * Axis-Aligned Bounding Box. * * @category Math */ export class BoundingBox { /** * Compute the min and max bounding values to encapsulate all specified vertices. * * @param {number[]|Float32Array} vertices - The vertices used to compute the new size for the * AABB. * @param {Vec3} min - Stored computed min value. * @param {Vec3} max - Stored computed max value. * @param {number} [numVerts] - Number of vertices to use from the beginning of vertices array. * All vertices are used if not specified. */ static computeMinMax(vertices: number[] | Float32Array, min: Vec3, max: Vec3, numVerts?: number): void; /** * Create a new BoundingBox instance. The bounding box is axis-aligned. * * @param {Vec3} [center] - Center of box. The constructor takes a reference of this parameter. * @param {Vec3} [halfExtents] - Half the distance across the box in each axis. The constructor * takes a reference of this parameter. Defaults to 0.5 on each axis. */ constructor(center?: Vec3, halfExtents?: Vec3); /** * Center of box. * * @type {Vec3} */ center: Vec3; /** * Half the distance across the box in each axis. * * @type {Vec3} */ halfExtents: Vec3; /** * @type {Vec3} * @private */ private _min; /** * @type {Vec3} * @private */ private _max; /** * Combines two bounding boxes into one, enclosing both. * * @param {BoundingBox} other - Bounding box to add. */ add(other: BoundingBox): void; /** * Copies the contents of a source AABB. * * @param {BoundingBox} src - The AABB to copy from. */ copy(src: BoundingBox): void; /** * Returns a clone of the AABB. * * @returns {BoundingBox} A duplicate AABB. */ clone(): BoundingBox; /** * Test whether two axis-aligned bounding boxes intersect. * * @param {BoundingBox} other - Bounding box to test against. * @returns {boolean} True if there is an intersection. */ intersects(other: BoundingBox): boolean; _intersectsRay(ray: any, point: any): boolean; _fastIntersectsRay(ray: any): boolean; /** * Test if a ray intersects with the AABB. * * @param {import('./ray.js').Ray} ray - Ray to test against (direction must be normalized). * @param {Vec3} [point] - If there is an intersection, the intersection point will be copied * into here. * @returns {boolean} True if there is an intersection. */ intersectsRay(ray: import("./ray.js").Ray, point?: Vec3): boolean; /** * Sets the minimum and maximum corner of the AABB. Using this function is faster than * assigning min and max separately. * * @param {Vec3} min - The minimum corner of the AABB. * @param {Vec3} max - The maximum corner of the AABB. */ setMinMax(min: Vec3, max: Vec3): void; /** * Return the minimum corner of the AABB. * * @returns {Vec3} Minimum corner. */ getMin(): Vec3; /** * Return the maximum corner of the AABB. * * @returns {Vec3} Maximum corner. */ getMax(): Vec3; /** * Test if a point is inside a AABB. * * @param {Vec3} point - Point to test. * @returns {boolean} True if the point is inside the AABB and false otherwise. */ containsPoint(point: Vec3): boolean; /** * Set an AABB to enclose the specified AABB if it were to be transformed by the specified 4x4 * matrix. * * @param {BoundingBox} aabb - Box to transform and enclose. * @param {import('../math/mat4.js').Mat4} m - Transformation matrix to apply to source AABB. * @param {boolean} ignoreScale - If true is specified, a scale from the matrix is ignored. Defaults to false. */ setFromTransformedAabb(aabb: BoundingBox, m: import("../math/mat4.js").Mat4, ignoreScale?: boolean): void; /** * Compute the size of the AABB to encapsulate all specified vertices. * * @param {number[]|Float32Array} vertices - The vertices used to compute the new size for the * AABB. * @param {number} [numVerts] - Number of vertices to use from the beginning of vertices array. * All vertices are used if not specified. */ compute(vertices: number[] | Float32Array, numVerts?: number): void; /** * Test if a Bounding Sphere is overlapping, enveloping, or inside this AABB. * * @param {import('./bounding-sphere.js').BoundingSphere} sphere - Bounding Sphere to test. * @returns {boolean} True if the Bounding Sphere is overlapping, enveloping, or inside the * AABB and false otherwise. */ intersectsBoundingSphere(sphere: import("./bounding-sphere.js").BoundingSphere): boolean; _distanceToBoundingSphereSq(sphere: any): number; _expand(expandMin: any, expandMax: any): void; } import { Vec3 } from '../math/vec3.js';