import Vector3 from './Vector3'; import Plane from './Plane'; import BoundingBox from './BoundingBox'; import Matrix4 from './Matrix4'; declare class Ray { origin: Vector3; direction: Vector3; constructor(origin?: Vector3, direction?: Vector3); /** * Calculate intersection point between ray and a give plane * @param plane * @param out */ intersectPlane(plane: Plane, out?: Vector3): Vector3 | null; /** * Mirror the ray against plane * @param plane */ mirrorAgainstPlane(plane: Plane): void; distanceToPoint(point: Vector3): number; /** * Calculate intersection point between ray and sphere * @param center * @param radius * @param out */ intersectSphere(center: Vector3, radius: number, out?: Vector3): Vector3 | null | undefined; /** * Calculate intersection point between ray and bounding box * @param bbox * @param out */ intersectBoundingBox(bbox: BoundingBox, out?: Vector3): Vector3 | null; /** * Calculate intersection point between ray and three triangle vertices * @param a * @param b * @param c * @param singleSided, CW triangle will be ignored * @param out * @param barycenteric barycentric coords */ intersectTriangle(aIn: Vector3, bIn: Vector3, cIn: Vector3, singleSided: boolean, out: Vector3, barycenteric?: Vector3): boolean; /** * Apply an affine transform matrix to the ray */ applyTransform(matrix: Matrix4): void; /** * Copy values from another ray * @param ray */ copy(ray: Ray): void; /** * Clone a new ray */ clone(): Ray; } export default Ray;