/// <summary>
        /// Resets the current quadrilateral surface with new values for the axes, origin, and orientation.
        /// </summary>
        /// <param name="axis0">The new first axis.</param>
        /// <param name="axis1">The new second axis.</param>
        /// <param name="origin">The new origin of the plane.</param>
        /// <param name="orientation">The new orientation of the plane.</param>
        /// <returns>A reference to the current surface.</returns>
        public QuadrilateralSurface Reset(WrappableAxis2 axis0, WrappableAxis2 axis1, Vector3 origin, Quaternion orientation)
        {
            Reset(origin, orientation);
            this.axis0 = axis0;
            this.axis1 = axis1;

            OnAfterDeserialize();

            return(this);
        }
 /// <summary>
 /// Creates a quadrilateral surface instance with the given axes, origin, and orientation.
 /// </summary>
 /// <param name="axis0">The first axis.</param>
 /// <param name="axis1">The second axis.</param>
 /// <param name="origin">The origin of the plane.</param>
 /// <param name="orientation">The orientation of the plane.</param>
 /// <returns>A quadrilateral surface.</returns>
 public static QuadrilateralSurface Create(WrappableAxis2 axis0, WrappableAxis2 axis1, Vector3 origin, Quaternion orientation)
 {
     return(CreateInstance <QuadrilateralSurface>().Reset(axis0, axis1, origin, orientation));
 }