Plane in hessian form.
``````    [Serializable]
public struct Plane : IEquatable<Plane>
``````

Plane represents a normalized plane equation. Basically, “normal” is the normal of the plane (a,b,c normalized), and “d” is the distance from the origin to the plane (in the direction of “normal”). “Over” or “Above” the plane is considered the side of the plane towards where the normal is pointing.

### Static Properties

``````    public static  PlaneXY { get; }
``````

``````    public static  PlaneXZ { get; }
``````

``````    public static  PlaneYZ { get; }
``````

### Constructors

``````    public Plane(float a, float b, float c, float d)
``````

Creates a plane from the four parameters `a`, `b`, `c` and `d`.

``````    public Plane(Vector3 normal, float d)
``````

Creates a plane from the normal and the plane’s distance to the origin.

``````    public Plane(Vector3 v1, Vector3 v2, Vector3 v3)
``````

Creates a plane from three points.

``````    public Plane()
``````

### Properties

``````    public Vector3 Center { get; }
``````

``````    public float D { get; set; }
``````

``````    public Vector3 Normal { get; set; }
``````

``````    public float x { get; set; }
``````

``````    public float y { get; set; }
``````

``````    public float z { get; set; }
``````

### Methods

``````    public float DistanceTo(Vector3 point)
``````

Returns the shortest distance from the plane to the position `point`.

``````    public override bool Equals(object obj)
``````

``````    public bool Equals(Plane other)
``````

``````    public Vector3 GetAnyPoint()
``````

Returns a point on the plane.

``````    public override int GetHashCode()
``````

``````    public bool HasPoint(Vector3 point, float epsilon = 1E-06f)
``````

Returns `true` if `point` is inside the plane (by a very minimum `epsilon` threshold).

``````    public Vector3 Intersect3(Plane b, Plane c)
``````

Returns the intersection point of the three planes `b`, `c` and this plane. If no intersection is found, `null` is returned.

``````    public Vector3 IntersectRay(Vector3 from, Vector3 dir)
``````

``````    public Vector3 IntersectSegment(Vector3 begin, Vector3 end)
``````

``````    public bool IsPointOver(Vector3 point)
``````

Returns `true` if `point` is located above the plane.

``````    public Plane Normalized()
``````

Returns a copy of the plane, normalized.

``````    public Vector3 Project(Vector3 point)
``````

Returns the orthogonal projection of point `p` into a point in the plane.

``````    public override string ToString()
``````

``````    public string ToString(string format)
``````

### Operators

``````    public static bool operator ==(Plane left, Plane right)
``````

``````    public static bool operator !=(Plane left, Plane right)
``````

``````    public static Plane operator -(Plane plane)
``````
Tags: