import type { MeshData } from '@ifc-lite/geometry'; export interface Ray { origin: { x: number; y: number; z: number; }; direction: { x: number; y: number; z: number; }; } export interface Vec3 { x: number; y: number; z: number; } export interface Intersection { point: Vec3; normal: Vec3; distance: number; meshIndex: number; triangleIndex: number; expressId: number; barycentricCoord: { u: number; v: number; w: number; }; } export declare class Raycaster { private epsilon; /** * Cast a ray through all meshes and return the closest intersection */ raycast(ray: Ray, meshes: MeshData[]): Intersection | null; /** * Cast ray through a single mesh */ private raycastMesh; /** * Ray-triangle intersection using Möller–Trumbore algorithm */ private intersectTriangle; /** * Calculate triangle normal */ private calculateTriangleNormal; /** * Vector math utilities */ private subtract; private cross; private dot; private normalize; private length; /** * Get closest point on line segment to a point */ closestPointOnSegment(p: Vec3, a: Vec3, b: Vec3): Vec3; /** * Distance from point to point */ distance(a: Vec3, b: Vec3): number; } //# sourceMappingURL=raycaster.d.ts.map