function Plane(normal, distance) {
  //>>includeStart('debug', pragmas.debug);
  Check.typeOf.object("normal", normal);
  if (
    !CesiumMath.equalsEpsilon(
      Cartesian3.magnitude(normal),
      1.0,
      CesiumMath.EPSILON6,
    )
  ) {
    throw new DeveloperError("normal must be normalized.");
  }
  Check.typeOf.number("distance", distance);
  //>>includeEnd('debug');

  /**
   * The plane's normal.
   *
   * @type {Cartesian3}
   */
  this.normal = Cartesian3.clone(normal);

  /**
   * The shortest distance from the origin to the plane.  The sign of
   * <code>distance</code> determines which side of the plane the origin
   * is on.  If <code>distance</code> is positive, the origin is in the half-space
   * in the direction of the normal; if negative, the origin is in the half-space
   * opposite to the normal; if zero, the plane passes through the origin.
   *
   * @type {number}
   */
  this.distance = distance;
}
A plane in Hessian Normal Form defined by
<pre>
ax + by + cz + d = 0
</pre>
where (a, b, c) is the plane's <code>normal</code>, d is the signed
<code>distance</code> to the plane, and (x, y, z) is any point on
the plane.

@alias Plane
@constructor

@param {Cartesian3} normal The plane's normal (normalized).
@param {number} distance The shortest distance from the origin to the plane.  The sign of
<code>distance</code> determines which side of the plane the origin
is on.  If <code>distance</code> is positive, the origin is in the half-space
in the direction of the normal; if negative, the origin is in the half-space
opposite to the normal; if zero, the plane passes through the origin.

@example
// The plane x=0
const plane = new Cesium.Plane(Cesium.Cartesian3.UNIT_X, 0.0);

@exception {DeveloperError} Normal must be normalized