function EllipsoidGeometry(options) {
  options = options ?? Frozen.EMPTY_OBJECT;

  const radii = options.radii ?? defaultRadii;
  const innerRadii = options.innerRadii ?? radii;
  const minimumClock = options.minimumClock ?? 0.0;
  const maximumClock = options.maximumClock ?? CesiumMath.TWO_PI;
  const minimumCone = options.minimumCone ?? 0.0;
  const maximumCone = options.maximumCone ?? CesiumMath.PI;
  const stackPartitions = Math.round(options.stackPartitions ?? 64);
  const slicePartitions = Math.round(options.slicePartitions ?? 64);
  const vertexFormat = options.vertexFormat ?? VertexFormat.DEFAULT;

  //>>includeStart('debug', pragmas.debug);
  if (slicePartitions < 3) {
    throw new DeveloperError(
      "options.slicePartitions cannot be less than three.",
    );
  }
  if (stackPartitions < 3) {
    throw new DeveloperError(
      "options.stackPartitions cannot be less than three.",
    );
  }
  //>>includeEnd('debug');

  this._radii = Cartesian3.clone(radii);
  this._innerRadii = Cartesian3.clone(innerRadii);
  this._minimumClock = minimumClock;
  this._maximumClock = maximumClock;
  this._minimumCone = minimumCone;
  this._maximumCone = maximumCone;
  this._stackPartitions = stackPartitions;
  this._slicePartitions = slicePartitions;
  this._vertexFormat = VertexFormat.clone(vertexFormat);
  this._offsetAttribute = options.offsetAttribute;
  this._workerName = "createEllipsoidGeometry";
}
A description of an ellipsoid centered at the origin.

@alias EllipsoidGeometry
@constructor

@param {object} [options] Object with the following properties:
@param {Cartesian3} [options.radii=Cartesian3(1.0, 1.0, 1.0)] The radii of the ellipsoid in the x, y, and z directions.
@param {Cartesian3} [options.innerRadii=options.radii] The inner radii of the ellipsoid in the x, y, and z directions.
@param {number} [options.minimumClock=0.0] The minimum angle lying in the xy-plane measured from the positive x-axis and toward the positive y-axis.
@param {number} [options.maximumClock=2*PI] The maximum angle lying in the xy-plane measured from the positive x-axis and toward the positive y-axis.
@param {number} [options.minimumCone=0.0] The minimum angle measured from the positive z-axis and toward the negative z-axis.
@param {number} [options.maximumCone=PI] The maximum angle measured from the positive z-axis and toward the negative z-axis.
@param {number} [options.stackPartitions=64] The number of times to partition the ellipsoid into stacks.
@param {number} [options.slicePartitions=64] The number of times to partition the ellipsoid into radial slices.
@param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.

@exception {DeveloperError} options.slicePartitions cannot be less than three.
@exception {DeveloperError} options.stackPartitions cannot be less than three.

@see EllipsoidGeometry#createGeometry

@example
const ellipsoid = new Cesium.EllipsoidGeometry({
  vertexFormat : Cesium.VertexFormat.POSITION_ONLY,
  radii : new Cesium.Cartesian3(1000000.0, 500000.0, 500000.0)
});
const geometry = Cesium.EllipsoidGeometry.createGeometry(ellipsoid);