/*!
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License.
 */
import { Matrix, Vector3 } from '.';
/**
 * Represens a plane by the equation ax + by + cz + d = 0
 */
export declare class Plane {
    /**
     * Normal of the plane (a,b,c)
     */
    normal: Vector3;
    /**
     * d component of the plane
     */
    d: number;
    /**
     * Creates a Plane object according to the given floats a, b, c, d and the plane equation : ax + by + cz + d = 0
     * @param a a component of the plane
     * @param b b component of the plane
     * @param c c component of the plane
     * @param d d component of the plane
     */
    constructor(a: number, b: number, c: number, d: number);
    /**
     * @returns the plane coordinates as a new array of 4 elements [a, b, c, d].
     */
    asArray(): number[];
    /**
     * @returns a new plane copied from the current Plane.
     */
    clone(): Plane;
    /**
     * @returns the string "Plane".
     */
    getClassName(): string;
    /**
     * @returns the Plane hash code.
     */
    getHashCode(): number;
    /**
     * Normalize the current Plane in place.
     * @returns the updated Plane.
     */
    normalize(): Plane;
    /**
     * Applies a transformation the plane and returns the result
     * @param transformation the transformation matrix to be applied to the plane
     * @returns a new Plane as the result of the transformation of the current Plane by the given matrix.
     */
    transform(transformation: Matrix): Plane;
    /**
     * Calcualtte the dot product between the point and the plane normal
     * @param point point to calculate the dot product with
     * @returns the dot product (float) of the point coordinates and the plane normal.
     */
    dotCoordinate(point: Vector3): number;
    /**
     * Updates the current Plane from the plane defined by the three given points.
     * @param point1 one of the points used to contruct the plane
     * @param point2 one of the points used to contruct the plane
     * @param point3 one of the points used to contruct the plane
     * @returns the updated Plane.
     */
    copyFromPoints(point1: Vector3, point2: Vector3, point3: Vector3): Plane;
    /**
     * Checks if the plane is facing a given direction
     * @param direction the direction to check if the plane is facing
     * @param epsilon value the dot product is compared against (returns true if dot <= epsilon)
     * @returns True is the vector "direction"  is the same side than the plane normal.
     */
    isFrontFacingTo(direction: Vector3, epsilon: number): boolean;
    /**
     * Calculates the distance to a point
     * @param point point to calculate distance to
     * @returns the signed distance (float) from the given point to the Plane.
     */
    signedDistanceTo(point: Vector3): number;
    /**
     * Creates a plane from an  array
     * @param array the array to create a plane from
     * @returns a new Plane from the given array.
     */
    static FromArray(array: ArrayLike<number>): Plane;
    /**
     * Creates a plane from three points
     * @param point1 point used to create the plane
     * @param point2 point used to create the plane
     * @param point3 point used to create the plane
     * @returns a new Plane defined by the three given points.
     */
    static FromPoints(point1: Vector3, point2: Vector3, point3: Vector3): Plane;
    /**
     * Creates a plane from an origin point and a normal
     * @param origin origin of the plane to be constructed
     * @param normal normal of the plane to be constructed
     * @returns a new Plane the normal vector to this plane at the given origin point.
     * Note : the vector "normal" is updated because normalized.
     */
    static FromPositionAndNormal(origin: Vector3, normal: Vector3): Plane;
    /**
     * Calculates the distance from a plane and a point
     * @param origin origin of the plane to be constructed
     * @param normal normal of the plane to be constructed
     * @param point point to calculate distance to
     * @returns the signed distance between the plane defined by the normal vector at the "origin"
     * point and the given other point.
     */
    static SignedDistanceToPlaneFromPositionAndNormal(origin: Vector3, normal: Vector3, point: Vector3): number;
}
//# sourceMappingURL=plane.d.ts.map