# Plane

A two dimensional surface that extends infinitely in 3D space, represented in Hessian normal form by a unit length normal vector and a constant.

## Constructor

### new Plane ( normal : Vector3, constant : number )

Constructs a new plane.

normal | A unit length vector defining the normal of the plane. Default is `(1,0,0)`.
constant | The signed distance from the origin to the plane. Default is `0`.

## Properties

### .constant : number

The signed distance from the origin to the plane.

Default is `0`.

### .isPlane : boolean (readonly)

This flag can be used for type testing.

Default is `true`.

### .normal : Vector3

A unit length vector defining the normal of the plane.

## Methods

### .applyMatrix4 ( matrix : Matrix4, optionalNormalMatrix : Matrix4 ) : Plane

Apply a 4x4 matrix to the plane. The matrix must be an affine, homogeneous transform.

The optional normal matrix can be pre-computed like so:

    const optionalNormalMatrix = new THREE.Matrix3().getNormalMatrix( matrix );

matrix | The transformation matrix.
optionalNormalMatrix | A pre-computed normal matrix.

Returns: A reference to this plane.

### .clone () : Plane

Returns a new plane with copied values from this instance.

Returns: A clone of this instance.

### .coplanarPoint ( target : Vector3 ) : Vector3

Returns a coplanar vector to the plane, by calculating the projection of the normal at the origin onto the plane.

target | The target vector that is used to store the method's result.

Returns: The coplanar point.

### .copy ( plane : Plane ) : Plane

Copies the values of the given plane to this instance.

plane | The plane to copy.

Returns: A reference to this plane.

### .distanceToPoint ( point : Vector3 ) : number

Returns the signed distance from the given point to this plane.

point | The point to compute the distance for.

Returns: The signed distance.

### .distanceToSphere ( sphere : Sphere ) : number

Returns the signed distance from the given sphere to this plane.

sphere | The sphere to compute the distance for.

Returns: The signed distance.

### .equals ( plane : Plane ) : boolean

Returns `true` if this plane is equal with the given one.

plane | The plane to test for equality.

Returns: Whether this plane is equal with the given one.

### .intersectLine ( line : Line3, target : Vector3 ) : Vector3

Returns the intersection point of the passed line and the plane. Returns `null` if the line does not intersect. Returns the line's starting point if the line is coplanar with the plane.

line | The line to compute the intersection for.
target | The target vector that is used to store the method's result.

Returns: The intersection point.

### .intersectsBox ( box : Box3 ) : boolean

Returns `true` if the given bounding box intersects with the plane.

box | The bounding box to test.

Returns: Whether the given bounding box intersects with the plane or not.

### .intersectsLine ( line : Line3 ) : boolean

Returns `true` if the given line segment intersects with (passes through) the plane.

line | The line to test.

Returns: Whether the given line segment intersects with the plane or not.

### .intersectsSphere ( sphere : Sphere ) : boolean

Returns `true` if the given bounding sphere intersects with the plane.

sphere | The bounding sphere to test.

Returns: Whether the given bounding sphere intersects with the plane or not.

### .negate () : Plane

Negates both the plane normal and the constant.

Returns: A reference to this plane.

### .normalize () : Plane

Normalizes the plane normal and adjusts the constant accordingly.

Returns: A reference to this plane.

### .projectPoint ( point : Vector3, target : Vector3 ) : Vector3

Projects a the given point onto the plane.

point | The point to project.
target | The target vector that is used to store the method's result.

Returns: The projected point on the plane.

### .set ( normal : Vector3, constant : number ) : Plane

Sets the plane components by copying the given values.

normal | The normal.
constant | The constant.

Returns: A reference to this plane.

### .setComponents ( x : number, y : number, z : number, w : number ) : Plane

Sets the plane components by defining `x`, `y`, `z` as the plane normal and `w` as the constant.

x | The value for the normal's x component.
y | The value for the normal's y component.
z | The value for the normal's z component.
w | The constant value.

Returns: A reference to this plane.

### .setFromCoplanarPoints ( a : Vector3, b : Vector3, c : Vector3 ) : Plane

Sets the plane from three coplanar points. The winding order is assumed to be counter-clockwise, and determines the direction of the plane normal.

a | The first coplanar point.
b | The second coplanar point.
c | The third coplanar point.

Returns: A reference to this plane.

### .setFromNormalAndCoplanarPoint ( normal : Vector3, point : Vector3 ) : Plane

Sets the plane from the given normal and coplanar point (that is a point that lies onto the plane).

normal | The normal.
point | A coplanar point.

Returns: A reference to this plane.

### .translate ( offset : Vector3 ) : Plane

Translates the plane by the distance defined by the given offset vector. Note that this only affects the plane constant and will not affect the normal vector.

offset | The offset vector.

Returns: A reference to this plane.

## Source

src/math/Plane.js