pex-geom
Version:
Geometry intersection and bounding volume helpers for PEX.
63 lines (62 loc) • 2.43 kB
TypeScript
/**
* Creates a new ray
* @returns {import("./types.js").ray}
*/
export function create(): import("./types.js").ray;
/**
* Determines if a ray intersect a plane and set intersection point
* @see {@link https://www.cs.princeton.edu/courses/archive/fall00/cs426/lectures/raycast/sld017.htm}
* @param {import("./types.js").ray} ray
* @param {import("./types.js").plane} plane
* @param {import("./types.js").vec3} out
* @returns {number}
*/
export function hitTestPlane([origin, direction]: import("./types.js").ray, [point, normal]: import("./types.js").plane, out?: import("./types.js").vec3): number;
/**
* Determines if a ray intersect a triangle and set intersection point
* @see {@link http://geomalgorithms.com/a06-_intersect-2.html#intersect3D_RayTriangle()}
* @param {import("./types.js").ray} ray
* @param {import("./types.js").triangle} triangle
* @param {import("./types.js").vec3} out
* @returns {number}
*/
export function hitTestTriangle([origin, direction]: import("./types.js").ray, [p0, p1, p2]: import("./types.js").triangle, out?: import("./types.js").vec3): number;
/**
* Determines if a ray intersect an AABB bounding box
* @see {@link http://gamedev.stackexchange.com/questions/18436/most-efficient-aabb-vs-ray-collision-algorithms}
* @param {import("./types.js").ray} ray
* @param {import("./types.js").aabb} aabb
* @returns {boolean}
*/
export function hitTestAABB([origin, direction]: import("./types.js").ray, aabb: import("./types.js").aabb): boolean;
/**
* Prints a plane to a string.
* @param {import("./types.js").ray} a
* @param {number} [precision=4]
* @returns {string}
*/
export function toString(a: import("./types.js").ray, precision?: number): string;
/**
* Enum for different intersections values
*/
export type Intersections = number;
/**
* Enum for different intersections values
* @readonly
* @enum {number}
*/
export const Intersections: Readonly<{
Intersect: 1;
NoIntersect: 0;
SamePlane: -1;
Parallel: -2;
TriangleDegenerate: -2;
}>;
/**
* Determines if a ray intersect an AABB bounding box
* @see {@link http://gamedev.stackexchange.com/questions/18436/most-efficient-aabb-vs-ray-collision-algorithms}
* @param {import("./types.js").ray} ray
* @param {import("./types.js").aabb} aabb
* @returns {boolean}
*/
export function intersectsAABB([origin, direction]: import("./types.js").ray, aabb: import("./types.js").aabb): boolean;