import { Vector2, Vector3, PerspectiveCamera, Line3 } from '../../threepipe';
export interface PointLike {
    x: number;
    y: number;
}
export interface SizeLike {
    w: number;
    h: number;
}
export interface RectLike extends PointLike, SizeLike {
}
export declare function projectPointNDC(point: Vector3, target: Vector2, camera: PerspectiveCamera): Vector2;
export declare function projectPoint(point: Vector3, target: Vector2, camera: PerspectiveCamera, renderSize: SizeLike): Vector2;
/**
 * Converts a point from the NDC coordinates to the image coordinates
 * @param point Point in NDC to be converted
 * @param size Size of the render
 * @returns
 */
export declare function NDCPointToImage(point: Vector2, target: Vector2, size: SizeLike): Vector2;
/**
 * Converts a point from the image coordinates to the NDC coordinates
 * @param point Point in the image coordinates
 * @param size Size of the render
 * @returns
 */
export declare function imagePointToNDC(point: Vector2, target: Vector2, size: SizeLike): Vector2;
export declare function hashVector3(vec: Vector3, multiplier?: number): string;
export declare function hashVector2(vec: Vector2, multiplier?: number): string;
/**
 * Checks wether lines intersect and computes the intersection point.
 *
 * Adapted from mathjs
 *
 * @param line1 First segment/line
 * @param line2 Second segment/line
 * @param target Destination of the intersection point
 * @param infiniteLine Wether to consider segments as infinite lines. Default, false
 * @param tolerance Tolerance from which points are considred equal
 * @returns true if lines intersect, false otherwise
 */
export declare function intersectLines(line1: Line3, line2: Line3, target: Vector3, infiniteLine?: boolean, tolerance?: number): boolean;
export declare function vectors3Equal(a: Vector3, b: Vector3, tolerance?: number): boolean;
export declare function vectors2Equal(a: Vector2, b: Vector2, tolerance?: number): boolean;
//# sourceMappingURL=geometry.d.ts.map