1 line
32 KiB
Plaintext
1 line
32 KiB
Plaintext
{"version":3,"file":"EllipsoidOutlineGeometry-b79bb09f.js","sources":["../../../../Source/Core/EllipsoidOutlineGeometry.js"],"sourcesContent":["import arrayFill from \"./arrayFill.js\";\nimport BoundingSphere from \"./BoundingSphere.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport ComponentDatatype from \"./ComponentDatatype.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport Ellipsoid from \"./Ellipsoid.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 CesiumMath from \"./Math.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\n\nconst defaultRadii = new Cartesian3(1.0, 1.0, 1.0);\nconst cos = Math.cos;\nconst sin = Math.sin;\n\n/**\n * A description of the outline of an ellipsoid centered at the origin.\n *\n * @alias EllipsoidOutlineGeometry\n * @constructor\n *\n * @param {Object} [options] Object with the following properties:\n * @param {Cartesian3} [options.radii=Cartesian3(1.0, 1.0, 1.0)] The radii of the ellipsoid in the x, y, and z directions.\n * @param {Cartesian3} [options.innerRadii=options.radii] The inner radii of the ellipsoid in the x, y, and z directions.\n * @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.\n * @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.\n * @param {Number} [options.minimumCone=0.0] The minimum angle measured from the positive z-axis and toward the negative z-axis.\n * @param {Number} [options.maximumCone=PI] The maximum angle measured from the positive z-axis and toward the negative z-axis.\n * @param {Number} [options.stackPartitions=10] The count of stacks for the ellipsoid (1 greater than the number of parallel lines).\n * @param {Number} [options.slicePartitions=8] The count of slices for the ellipsoid (Equal to the number of radial lines).\n * @param {Number} [options.subdivisions=128] The number of points per line, determining the granularity of the curvature.\n *\n * @exception {DeveloperError} options.stackPartitions must be greater than or equal to one.\n * @exception {DeveloperError} options.slicePartitions must be greater than or equal to zero.\n * @exception {DeveloperError} options.subdivisions must be greater than or equal to zero.\n *\n * @example\n * const ellipsoid = new Cesium.EllipsoidOutlineGeometry({\n * radii : new Cesium.Cartesian3(1000000.0, 500000.0, 500000.0),\n * stackPartitions: 6,\n * slicePartitions: 5\n * });\n * const geometry = Cesium.EllipsoidOutlineGeometry.createGeometry(ellipsoid);\n */\nfunction EllipsoidOutlineGeometry(options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n const radii = defaultValue(options.radii, defaultRadii);\n const innerRadii = defaultValue(options.innerRadii, radii);\n const minimumClock = defaultValue(options.minimumClock, 0.0);\n const maximumClock = defaultValue(options.maximumClock, CesiumMath.TWO_PI);\n const minimumCone = defaultValue(options.minimumCone, 0.0);\n const maximumCone = defaultValue(options.maximumCone, CesiumMath.PI);\n const stackPartitions = Math.round(defaultValue(options.stackPartitions, 10));\n const slicePartitions = Math.round(defaultValue(options.slicePartitions, 8));\n const subdivisions = Math.round(defaultValue(options.subdivisions, 128));\n\n //>>includeStart('debug', pragmas.debug);\n if (stackPartitions < 1) {\n throw new DeveloperError(\"options.stackPartitions cannot be less than 1\");\n }\n if (slicePartitions < 0) {\n throw new DeveloperError(\"options.slicePartitions cannot be less than 0\");\n }\n if (subdivisions < 0) {\n throw new DeveloperError(\n \"options.subdivisions must be greater than or equal to zero.\"\n );\n }\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._radii = Cartesian3.clone(radii);\n this._innerRadii = Cartesian3.clone(innerRadii);\n this._minimumClock = minimumClock;\n this._maximumClock = maximumClock;\n this._minimumCone = minimumCone;\n this._maximumCone = maximumCone;\n this._stackPartitions = stackPartitions;\n this._slicePartitions = slicePartitions;\n this._subdivisions = subdivisions;\n this._offsetAttribute = options.offsetAttribute;\n this._workerName = \"createEllipsoidOutlineGeometry\";\n}\n\n/**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\nEllipsoidOutlineGeometry.packedLength = 2 * Cartesian3.packedLength + 8;\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {EllipsoidOutlineGeometry} 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 */\nEllipsoidOutlineGeometry.pack = function (value, array, startingIndex) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(value)) {\n throw new DeveloperError(\"value is required\");\n }\n if (!defined(array)) {\n throw new DeveloperError(\"array is required\");\n }\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n Cartesian3.pack(value._radii, array, startingIndex);\n startingIndex += Cartesian3.packedLength;\n\n Cartesian3.pack(value._innerRadii, array, startingIndex);\n startingIndex += Cartesian3.packedLength;\n\n array[startingIndex++] = value._minimumClock;\n array[startingIndex++] = value._maximumClock;\n array[startingIndex++] = value._minimumCone;\n array[startingIndex++] = value._maximumCone;\n array[startingIndex++] = value._stackPartitions;\n array[startingIndex++] = value._slicePartitions;\n array[startingIndex++] = value._subdivisions;\n array[startingIndex] = defaultValue(value._offsetAttribute, -1);\n\n return array;\n};\n\nconst scratchRadii = new Cartesian3();\nconst scratchInnerRadii = new Cartesian3();\nconst scratchOptions = {\n radii: scratchRadii,\n innerRadii: scratchInnerRadii,\n minimumClock: undefined,\n maximumClock: undefined,\n minimumCone: undefined,\n maximumCone: undefined,\n stackPartitions: undefined,\n slicePartitions: undefined,\n subdivisions: 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 {EllipsoidOutlineGeometry} [result] The object into which to store the result.\n * @returns {EllipsoidOutlineGeometry} The modified result parameter or a new EllipsoidOutlineGeometry instance if one was not provided.\n */\nEllipsoidOutlineGeometry.unpack = function (array, startingIndex, result) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(array)) {\n throw new DeveloperError(\"array is required\");\n }\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n const radii = Cartesian3.unpack(array, startingIndex, scratchRadii);\n startingIndex += Cartesian3.packedLength;\n\n const innerRadii = Cartesian3.unpack(array, startingIndex, scratchInnerRadii);\n startingIndex += Cartesian3.packedLength;\n\n const minimumClock = array[startingIndex++];\n const maximumClock = array[startingIndex++];\n const minimumCone = array[startingIndex++];\n const maximumCone = array[startingIndex++];\n const stackPartitions = array[startingIndex++];\n const slicePartitions = array[startingIndex++];\n const subdivisions = array[startingIndex++];\n const offsetAttribute = array[startingIndex];\n\n if (!defined(result)) {\n scratchOptions.minimumClock = minimumClock;\n scratchOptions.maximumClock = maximumClock;\n scratchOptions.minimumCone = minimumCone;\n scratchOptions.maximumCone = maximumCone;\n scratchOptions.stackPartitions = stackPartitions;\n scratchOptions.slicePartitions = slicePartitions;\n scratchOptions.subdivisions = subdivisions;\n scratchOptions.offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n return new EllipsoidOutlineGeometry(scratchOptions);\n }\n\n result._radii = Cartesian3.clone(radii, result._radii);\n result._innerRadii = Cartesian3.clone(innerRadii, result._innerRadii);\n result._minimumClock = minimumClock;\n result._maximumClock = maximumClock;\n result._minimumCone = minimumCone;\n result._maximumCone = maximumCone;\n result._stackPartitions = stackPartitions;\n result._slicePartitions = slicePartitions;\n result._subdivisions = subdivisions;\n result._offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n\n return result;\n};\n\n/**\n * Computes the geometric representation of an outline of an ellipsoid, including its vertices, indices, and a bounding sphere.\n *\n * @param {EllipsoidOutlineGeometry} ellipsoidGeometry A description of the ellipsoid outline.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nEllipsoidOutlineGeometry.createGeometry = function (ellipsoidGeometry) {\n const radii = ellipsoidGeometry._radii;\n if (radii.x <= 0 || radii.y <= 0 || radii.z <= 0) {\n return;\n }\n\n const innerRadii = ellipsoidGeometry._innerRadii;\n if (innerRadii.x <= 0 || innerRadii.y <= 0 || innerRadii.z <= 0) {\n return;\n }\n\n const minimumClock = ellipsoidGeometry._minimumClock;\n const maximumClock = ellipsoidGeometry._maximumClock;\n const minimumCone = ellipsoidGeometry._minimumCone;\n const maximumCone = ellipsoidGeometry._maximumCone;\n const subdivisions = ellipsoidGeometry._subdivisions;\n const ellipsoid = Ellipsoid.fromCartesian3(radii);\n\n // Add an extra slice and stack to remain consistent with EllipsoidGeometry\n let slicePartitions = ellipsoidGeometry._slicePartitions + 1;\n let stackPartitions = ellipsoidGeometry._stackPartitions + 1;\n\n slicePartitions = Math.round(\n (slicePartitions * Math.abs(maximumClock - minimumClock)) /\n CesiumMath.TWO_PI\n );\n stackPartitions = Math.round(\n (stackPartitions * Math.abs(maximumCone - minimumCone)) / CesiumMath.PI\n );\n\n if (slicePartitions < 2) {\n slicePartitions = 2;\n }\n if (stackPartitions < 2) {\n stackPartitions = 2;\n }\n\n let extraIndices = 0;\n let vertexMultiplier = 1.0;\n const hasInnerSurface =\n innerRadii.x !== radii.x ||\n innerRadii.y !== radii.y ||\n innerRadii.z !== radii.z;\n let isTopOpen = false;\n let isBotOpen = false;\n if (hasInnerSurface) {\n vertexMultiplier = 2.0;\n // Add 2x slicePartitions to connect the top/bottom of the outer to\n // the top/bottom of the inner\n if (minimumCone > 0.0) {\n isTopOpen = true;\n extraIndices += slicePartitions;\n }\n if (maximumCone < Math.PI) {\n isBotOpen = true;\n extraIndices += slicePartitions;\n }\n }\n\n const vertexCount =\n subdivisions * vertexMultiplier * (stackPartitions + slicePartitions);\n const positions = new Float64Array(vertexCount * 3);\n\n // Multiply by two because two points define each line segment\n const numIndices =\n 2 *\n (vertexCount +\n extraIndices -\n (slicePartitions + stackPartitions) * vertexMultiplier);\n const indices = IndexDatatype.createTypedArray(vertexCount, numIndices);\n\n let i;\n let j;\n let theta;\n let phi;\n let index = 0;\n\n // Calculate sin/cos phi\n const sinPhi = new Array(stackPartitions);\n const cosPhi = new Array(stackPartitions);\n for (i = 0; i < stackPartitions; i++) {\n phi =\n minimumCone + (i * (maximumCone - minimumCone)) / (stackPartitions - 1);\n sinPhi[i] = sin(phi);\n cosPhi[i] = cos(phi);\n }\n\n // Calculate sin/cos theta\n const sinTheta = new Array(subdivisions);\n const cosTheta = new Array(subdivisions);\n for (i = 0; i < subdivisions; i++) {\n theta =\n minimumClock + (i * (maximumClock - minimumClock)) / (subdivisions - 1);\n sinTheta[i] = sin(theta);\n cosTheta[i] = cos(theta);\n }\n\n // Calculate the latitude lines on the outer surface\n for (i = 0; i < stackPartitions; i++) {\n for (j = 0; j < subdivisions; j++) {\n positions[index++] = radii.x * sinPhi[i] * cosTheta[j];\n positions[index++] = radii.y * sinPhi[i] * sinTheta[j];\n positions[index++] = radii.z * cosPhi[i];\n }\n }\n\n // Calculate the latitude lines on the inner surface\n if (hasInnerSurface) {\n for (i = 0; i < stackPartitions; i++) {\n for (j = 0; j < subdivisions; j++) {\n positions[index++] = innerRadii.x * sinPhi[i] * cosTheta[j];\n positions[index++] = innerRadii.y * sinPhi[i] * sinTheta[j];\n positions[index++] = innerRadii.z * cosPhi[i];\n }\n }\n }\n\n // Calculate sin/cos phi\n sinPhi.length = subdivisions;\n cosPhi.length = subdivisions;\n for (i = 0; i < subdivisions; i++) {\n phi = minimumCone + (i * (maximumCone - minimumCone)) / (subdivisions - 1);\n sinPhi[i] = sin(phi);\n cosPhi[i] = cos(phi);\n }\n\n // Calculate sin/cos theta for each slice partition\n sinTheta.length = slicePartitions;\n cosTheta.length = slicePartitions;\n for (i = 0; i < slicePartitions; i++) {\n theta =\n minimumClock +\n (i * (maximumClock - minimumClock)) / (slicePartitions - 1);\n sinTheta[i] = sin(theta);\n cosTheta[i] = cos(theta);\n }\n\n // Calculate the longitude lines on the outer surface\n for (i = 0; i < subdivisions; i++) {\n for (j = 0; j < slicePartitions; j++) {\n positions[index++] = radii.x * sinPhi[i] * cosTheta[j];\n positions[index++] = radii.y * sinPhi[i] * sinTheta[j];\n positions[index++] = radii.z * cosPhi[i];\n }\n }\n\n // Calculate the longitude lines on the inner surface\n if (hasInnerSurface) {\n for (i = 0; i < subdivisions; i++) {\n for (j = 0; j < slicePartitions; j++) {\n positions[index++] = innerRadii.x * sinPhi[i] * cosTheta[j];\n positions[index++] = innerRadii.y * sinPhi[i] * sinTheta[j];\n positions[index++] = innerRadii.z * cosPhi[i];\n }\n }\n }\n\n // Create indices for the latitude lines\n index = 0;\n for (i = 0; i < stackPartitions * vertexMultiplier; i++) {\n const topOffset = i * subdivisions;\n for (j = 0; j < subdivisions - 1; j++) {\n indices[index++] = topOffset + j;\n indices[index++] = topOffset + j + 1;\n }\n }\n\n // Create indices for the outer longitude lines\n let offset = stackPartitions * subdivisions * vertexMultiplier;\n for (i = 0; i < slicePartitions; i++) {\n for (j = 0; j < subdivisions - 1; j++) {\n indices[index++] = offset + i + j * slicePartitions;\n indices[index++] = offset + i + (j + 1) * slicePartitions;\n }\n }\n\n // Create indices for the inner longitude lines\n if (hasInnerSurface) {\n offset =\n stackPartitions * subdivisions * vertexMultiplier +\n slicePartitions * subdivisions;\n for (i = 0; i < slicePartitions; i++) {\n for (j = 0; j < subdivisions - 1; j++) {\n indices[index++] = offset + i + j * slicePartitions;\n indices[index++] = offset + i + (j + 1) * slicePartitions;\n }\n }\n }\n\n if (hasInnerSurface) {\n let outerOffset = stackPartitions * subdivisions * vertexMultiplier;\n let innerOffset = outerOffset + subdivisions * slicePartitions;\n if (isTopOpen) {\n // Draw lines from the top of the inner surface to the top of the outer surface\n for (i = 0; i < slicePartitions; i++) {\n indices[index++] = outerOffset + i;\n indices[index++] = innerOffset + i;\n }\n }\n\n if (isBotOpen) {\n // Draw lines from the top of the inner surface to the top of the outer surface\n outerOffset += subdivisions * slicePartitions - slicePartitions;\n innerOffset += subdivisions * slicePartitions - slicePartitions;\n for (i = 0; i < slicePartitions; i++) {\n indices[index++] = outerOffset + i;\n indices[index++] = innerOffset + i;\n }\n }\n }\n\n const attributes = new GeometryAttributes({\n position: new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: positions,\n }),\n });\n\n if (defined(ellipsoidGeometry._offsetAttribute)) {\n const length = positions.length;\n const applyOffset = new Uint8Array(length / 3);\n const offsetValue =\n ellipsoidGeometry._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.fromEllipsoid(ellipsoid),\n offsetAttribute: ellipsoidGeometry._offsetAttribute,\n });\n};\nexport default EllipsoidOutlineGeometry;\n"],"names":["Cartesian3","defaultValue","CesiumMath","DeveloperError","defined","GeometryOffsetAttribute","Ellipsoid","IndexDatatype","GeometryAttributes","GeometryAttribute","ComponentDatatype","arrayFill","Geometry","PrimitiveType","BoundingSphere"],"mappings":"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"} |