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

  const length = options.length;
  const topRadius = options.topRadius;
  const bottomRadius = options.bottomRadius;
  const vertexFormat = options.vertexFormat ?? VertexFormat.DEFAULT;
  const slices = options.slices ?? 128;

  //>>includeStart('debug', pragmas.debug);
  if (!defined(length)) {
    throw new DeveloperError("options.length must be defined.");
  }
  if (!defined(topRadius)) {
    throw new DeveloperError("options.topRadius must be defined.");
  }
  if (!defined(bottomRadius)) {
    throw new DeveloperError("options.bottomRadius must be defined.");
  }
  if (slices < 3) {
    throw new DeveloperError(
      "options.slices must be greater than or equal to 3.",
    );
  }
  if (
    defined(options.offsetAttribute) &&
    options.offsetAttribute === GeometryOffsetAttribute.TOP
  ) {
    throw new DeveloperError(
      "GeometryOffsetAttribute.TOP is not a supported options.offsetAttribute for this geometry.",
    );
  }
  //>>includeEnd('debug');

  this._length = length;
  this._topRadius = topRadius;
  this._bottomRadius = bottomRadius;
  this._vertexFormat = VertexFormat.clone(vertexFormat);
  this._slices = slices;
  this._offsetAttribute = options.offsetAttribute;
  this._workerName = "createCylinderGeometry";
}
A description of a cylinder.

@alias CylinderGeometry
@constructor

@param {object} options Object with the following properties:
@param {number} options.length The length of the cylinder.
@param {number} options.topRadius The radius of the top of the cylinder.
@param {number} options.bottomRadius The radius of the bottom of the cylinder.
@param {number} [options.slices=128] The number of edges around the perimeter of the cylinder.
@param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.

@exception {DeveloperError} options.slices must be greater than or equal to 3.

@see CylinderGeometry.createGeometry

@example
// create cylinder geometry
const cylinder = new Cesium.CylinderGeometry({
    length: 200000,
    topRadius: 80000,
    bottomRadius: 200000,
});
const geometry = Cesium.CylinderGeometry.createGeometry(cylinder);