{"version":3,"file":"createCylinderOutlineGeometry.js","sources":["../../../../Source/Core/CylinderOutlineGeometry.js","../../../../Source/WorkersES6/createCylinderOutlineGeometry.js"],"sourcesContent":["import arrayFill from \"./arrayFill.js\";\nimport BoundingSphere from \"./BoundingSphere.js\";\nimport Cartesian2 from \"./Cartesian2.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport Check from \"./Check.js\";\nimport ComponentDatatype from \"./ComponentDatatype.js\";\nimport CylinderGeometryLibrary from \"./CylinderGeometryLibrary.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport Geometry from \"./Geometry.js\";\nimport GeometryAttribute from \"./GeometryAttribute.js\";\nimport GeometryAttributes from \"./GeometryAttributes.js\";\nimport GeometryOffsetAttribute from \"./GeometryOffsetAttribute.js\";\nimport IndexDatatype from \"./IndexDatatype.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\n\nconst radiusScratch = new Cartesian2();\n\n/**\n * A description of the outline of a cylinder.\n *\n * @alias CylinderOutlineGeometry\n * @constructor\n *\n * @param {Object} options Object with the following properties:\n * @param {Number} options.length The length of the cylinder.\n * @param {Number} options.topRadius The radius of the top of the cylinder.\n * @param {Number} options.bottomRadius The radius of the bottom of the cylinder.\n * @param {Number} [options.slices=128] The number of edges around the perimeter of the cylinder.\n * @param {Number} [options.numberOfVerticalLines=16] Number of lines to draw between the top and bottom surfaces of the cylinder.\n *\n * @exception {DeveloperError} options.length must be greater than 0.\n * @exception {DeveloperError} options.topRadius must be greater than 0.\n * @exception {DeveloperError} options.bottomRadius must be greater than 0.\n * @exception {DeveloperError} bottomRadius and topRadius cannot both equal 0.\n * @exception {DeveloperError} options.slices must be greater than or equal to 3.\n *\n * @see CylinderOutlineGeometry.createGeometry\n *\n * @example\n * // create cylinder geometry\n * const cylinder = new Cesium.CylinderOutlineGeometry({\n * length: 200000,\n * topRadius: 80000,\n * bottomRadius: 200000,\n * });\n * const geometry = Cesium.CylinderOutlineGeometry.createGeometry(cylinder);\n */\nfunction CylinderOutlineGeometry(options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n const length = options.length;\n const topRadius = options.topRadius;\n const bottomRadius = options.bottomRadius;\n const slices = defaultValue(options.slices, 128);\n const numberOfVerticalLines = Math.max(\n defaultValue(options.numberOfVerticalLines, 16),\n 0\n );\n\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"options.positions\", length);\n Check.typeOf.number(\"options.topRadius\", topRadius);\n Check.typeOf.number(\"options.bottomRadius\", bottomRadius);\n Check.typeOf.number.greaterThanOrEquals(\"options.slices\", slices, 3);\n if (\n defined(options.offsetAttribute) &&\n options.offsetAttribute === GeometryOffsetAttribute.TOP\n ) {\n throw new DeveloperError(\n \"GeometryOffsetAttribute.TOP is not a supported options.offsetAttribute for this geometry.\"\n );\n }\n //>>includeEnd('debug');\n\n this._length = length;\n this._topRadius = topRadius;\n this._bottomRadius = bottomRadius;\n this._slices = slices;\n this._numberOfVerticalLines = numberOfVerticalLines;\n this._offsetAttribute = options.offsetAttribute;\n this._workerName = \"createCylinderOutlineGeometry\";\n}\n\n/**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\nCylinderOutlineGeometry.packedLength = 6;\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {CylinderOutlineGeometry} value The value to pack.\n * @param {Number[]} array The array to pack into.\n * @param {Number} [startingIndex=0] The index into the array at which to start packing the elements.\n *\n * @returns {Number[]} The array that was packed into\n */\nCylinderOutlineGeometry.pack = function (value, array, startingIndex) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"value\", value);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n array[startingIndex++] = value._length;\n array[startingIndex++] = value._topRadius;\n array[startingIndex++] = value._bottomRadius;\n array[startingIndex++] = value._slices;\n array[startingIndex++] = value._numberOfVerticalLines;\n array[startingIndex] = defaultValue(value._offsetAttribute, -1);\n\n return array;\n};\n\nconst scratchOptions = {\n length: undefined,\n topRadius: undefined,\n bottomRadius: undefined,\n slices: undefined,\n numberOfVerticalLines: undefined,\n offsetAttribute: undefined,\n};\n\n/**\n * Retrieves an instance from a packed array.\n *\n * @param {Number[]} array The packed array.\n * @param {Number} [startingIndex=0] The starting index of the element to be unpacked.\n * @param {CylinderOutlineGeometry} [result] The object into which to store the result.\n * @returns {CylinderOutlineGeometry} The modified result parameter or a new CylinderOutlineGeometry instance if one was not provided.\n */\nCylinderOutlineGeometry.unpack = function (array, startingIndex, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.defined(\"array\", array);\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n const length = array[startingIndex++];\n const topRadius = array[startingIndex++];\n const bottomRadius = array[startingIndex++];\n const slices = array[startingIndex++];\n const numberOfVerticalLines = array[startingIndex++];\n const offsetAttribute = array[startingIndex];\n\n if (!defined(result)) {\n scratchOptions.length = length;\n scratchOptions.topRadius = topRadius;\n scratchOptions.bottomRadius = bottomRadius;\n scratchOptions.slices = slices;\n scratchOptions.numberOfVerticalLines = numberOfVerticalLines;\n scratchOptions.offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n return new CylinderOutlineGeometry(scratchOptions);\n }\n\n result._length = length;\n result._topRadius = topRadius;\n result._bottomRadius = bottomRadius;\n result._slices = slices;\n result._numberOfVerticalLines = numberOfVerticalLines;\n result._offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n\n return result;\n};\n\n/**\n * Computes the geometric representation of an outline of a cylinder, including its vertices, indices, and a bounding sphere.\n *\n * @param {CylinderOutlineGeometry} cylinderGeometry A description of the cylinder outline.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nCylinderOutlineGeometry.createGeometry = function (cylinderGeometry) {\n let length = cylinderGeometry._length;\n const topRadius = cylinderGeometry._topRadius;\n const bottomRadius = cylinderGeometry._bottomRadius;\n const slices = cylinderGeometry._slices;\n const numberOfVerticalLines = cylinderGeometry._numberOfVerticalLines;\n\n if (\n length <= 0 ||\n topRadius < 0 ||\n bottomRadius < 0 ||\n (topRadius === 0 && bottomRadius === 0)\n ) {\n return;\n }\n\n const numVertices = slices * 2;\n\n const positions = CylinderGeometryLibrary.computePositions(\n length,\n topRadius,\n bottomRadius,\n slices,\n false\n );\n let numIndices = slices * 2;\n let numSide;\n if (numberOfVerticalLines > 0) {\n const numSideLines = Math.min(numberOfVerticalLines, slices);\n numSide = Math.round(slices / numSideLines);\n numIndices += numSideLines;\n }\n\n const indices = IndexDatatype.createTypedArray(numVertices, numIndices * 2);\n let index = 0;\n let i;\n for (i = 0; i < slices - 1; i++) {\n indices[index++] = i;\n indices[index++] = i + 1;\n indices[index++] = i + slices;\n indices[index++] = i + 1 + slices;\n }\n\n indices[index++] = slices - 1;\n indices[index++] = 0;\n indices[index++] = slices + slices - 1;\n indices[index++] = slices;\n\n if (numberOfVerticalLines > 0) {\n for (i = 0; i < slices; i += numSide) {\n indices[index++] = i;\n indices[index++] = i + slices;\n }\n }\n\n const attributes = new GeometryAttributes();\n attributes.position = new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: positions,\n });\n\n radiusScratch.x = length * 0.5;\n radiusScratch.y = Math.max(bottomRadius, topRadius);\n\n const boundingSphere = new BoundingSphere(\n Cartesian3.ZERO,\n Cartesian2.magnitude(radiusScratch)\n );\n\n if (defined(cylinderGeometry._offsetAttribute)) {\n length = positions.length;\n const applyOffset = new Uint8Array(length / 3);\n const offsetValue =\n cylinderGeometry._offsetAttribute === GeometryOffsetAttribute.NONE\n ? 0\n : 1;\n arrayFill(applyOffset, offsetValue);\n attributes.applyOffset = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: applyOffset,\n });\n }\n\n return new Geometry({\n attributes: attributes,\n indices: indices,\n primitiveType: PrimitiveType.LINES,\n boundingSphere: boundingSphere,\n offsetAttribute: cylinderGeometry._offsetAttribute,\n });\n};\nexport default CylinderOutlineGeometry;\n","import CylinderOutlineGeometry from \"../Core/CylinderOutlineGeometry.js\";\nimport defined from \"../Core/defined.js\";\n\nfunction createCylinderOutlineGeometry(cylinderGeometry, offset) {\n if (defined(offset)) {\n cylinderGeometry = CylinderOutlineGeometry.unpack(cylinderGeometry, offset);\n }\n return CylinderOutlineGeometry.createGeometry(cylinderGeometry);\n}\nexport default createCylinderOutlineGeometry;\n"],"names":["Cartesian2","defaultValue","Check","defined","GeometryOffsetAttribute","DeveloperError","CylinderGeometryLibrary","IndexDatatype","GeometryAttributes","GeometryAttribute","ComponentDatatype","BoundingSphere","Cartesian3","arrayFill","Geometry","PrimitiveType"],"mappings":"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"}