{"version":3,"file":"createRectangleOutlineGeometry.js","sources":["../../../../Source/Core/RectangleOutlineGeometry.js","../../../../Source/WorkersES6/createRectangleOutlineGeometry.js"],"sourcesContent":["import arrayFill from \"./arrayFill.js\";\nimport BoundingSphere from \"./BoundingSphere.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport Cartographic from \"./Cartographic.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 PolygonPipeline from \"./PolygonPipeline.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\nimport Rectangle from \"./Rectangle.js\";\nimport RectangleGeometryLibrary from \"./RectangleGeometryLibrary.js\";\n\nconst bottomBoundingSphere = new BoundingSphere();\nconst topBoundingSphere = new BoundingSphere();\nconst positionScratch = new Cartesian3();\nconst rectangleScratch = new Rectangle();\n\nfunction constructRectangle(geometry, computedOptions) {\n const ellipsoid = geometry._ellipsoid;\n const height = computedOptions.height;\n const width = computedOptions.width;\n const northCap = computedOptions.northCap;\n const southCap = computedOptions.southCap;\n\n let rowHeight = height;\n let widthMultiplier = 2;\n let size = 0;\n let corners = 4;\n if (northCap) {\n widthMultiplier -= 1;\n rowHeight -= 1;\n size += 1;\n corners -= 2;\n }\n if (southCap) {\n widthMultiplier -= 1;\n rowHeight -= 1;\n size += 1;\n corners -= 2;\n }\n size += widthMultiplier * width + 2 * rowHeight - corners;\n\n const positions = new Float64Array(size * 3);\n\n let posIndex = 0;\n let row = 0;\n let col;\n const position = positionScratch;\n if (northCap) {\n RectangleGeometryLibrary.computePosition(\n computedOptions,\n ellipsoid,\n false,\n row,\n 0,\n position\n );\n positions[posIndex++] = position.x;\n positions[posIndex++] = position.y;\n positions[posIndex++] = position.z;\n } else {\n for (col = 0; col < width; col++) {\n RectangleGeometryLibrary.computePosition(\n computedOptions,\n ellipsoid,\n false,\n row,\n col,\n position\n );\n positions[posIndex++] = position.x;\n positions[posIndex++] = position.y;\n positions[posIndex++] = position.z;\n }\n }\n\n col = width - 1;\n for (row = 1; row < height; row++) {\n RectangleGeometryLibrary.computePosition(\n computedOptions,\n ellipsoid,\n false,\n row,\n col,\n position\n );\n positions[posIndex++] = position.x;\n positions[posIndex++] = position.y;\n positions[posIndex++] = position.z;\n }\n\n row = height - 1;\n if (!southCap) {\n // if southCap is true, we dont need to add any more points because the south pole point was added by the iteration above\n for (col = width - 2; col >= 0; col--) {\n RectangleGeometryLibrary.computePosition(\n computedOptions,\n ellipsoid,\n false,\n row,\n col,\n position\n );\n positions[posIndex++] = position.x;\n positions[posIndex++] = position.y;\n positions[posIndex++] = position.z;\n }\n }\n\n col = 0;\n for (row = height - 2; row > 0; row--) {\n RectangleGeometryLibrary.computePosition(\n computedOptions,\n ellipsoid,\n false,\n row,\n col,\n position\n );\n positions[posIndex++] = position.x;\n positions[posIndex++] = position.y;\n positions[posIndex++] = position.z;\n }\n\n const indicesSize = (positions.length / 3) * 2;\n const indices = IndexDatatype.createTypedArray(\n positions.length / 3,\n indicesSize\n );\n\n let index = 0;\n for (let i = 0; i < positions.length / 3 - 1; i++) {\n indices[index++] = i;\n indices[index++] = i + 1;\n }\n indices[index++] = positions.length / 3 - 1;\n indices[index++] = 0;\n\n const geo = new Geometry({\n attributes: new GeometryAttributes(),\n primitiveType: PrimitiveType.LINES,\n });\n\n geo.attributes.position = new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: positions,\n });\n geo.indices = indices;\n\n return geo;\n}\n\nfunction constructExtrudedRectangle(rectangleGeometry, computedOptions) {\n const surfaceHeight = rectangleGeometry._surfaceHeight;\n const extrudedHeight = rectangleGeometry._extrudedHeight;\n const ellipsoid = rectangleGeometry._ellipsoid;\n const minHeight = extrudedHeight;\n const maxHeight = surfaceHeight;\n const geo = constructRectangle(rectangleGeometry, computedOptions);\n\n const height = computedOptions.height;\n const width = computedOptions.width;\n\n const topPositions = PolygonPipeline.scaleToGeodeticHeight(\n geo.attributes.position.values,\n maxHeight,\n ellipsoid,\n false\n );\n let length = topPositions.length;\n const positions = new Float64Array(length * 2);\n positions.set(topPositions);\n const bottomPositions = PolygonPipeline.scaleToGeodeticHeight(\n geo.attributes.position.values,\n minHeight,\n ellipsoid\n );\n positions.set(bottomPositions, length);\n geo.attributes.position.values = positions;\n\n const northCap = computedOptions.northCap;\n const southCap = computedOptions.southCap;\n let corners = 4;\n if (northCap) {\n corners -= 1;\n }\n if (southCap) {\n corners -= 1;\n }\n\n const indicesSize = (positions.length / 3 + corners) * 2;\n const indices = IndexDatatype.createTypedArray(\n positions.length / 3,\n indicesSize\n );\n length = positions.length / 6;\n let index = 0;\n for (let i = 0; i < length - 1; i++) {\n indices[index++] = i;\n indices[index++] = i + 1;\n indices[index++] = i + length;\n indices[index++] = i + length + 1;\n }\n indices[index++] = length - 1;\n indices[index++] = 0;\n indices[index++] = length + length - 1;\n indices[index++] = length;\n\n indices[index++] = 0;\n indices[index++] = length;\n\n let bottomCorner;\n if (northCap) {\n bottomCorner = height - 1;\n } else {\n const topRightCorner = width - 1;\n indices[index++] = topRightCorner;\n indices[index++] = topRightCorner + length;\n bottomCorner = width + height - 2;\n }\n\n indices[index++] = bottomCorner;\n indices[index++] = bottomCorner + length;\n\n if (!southCap) {\n const bottomLeftCorner = width + bottomCorner - 1;\n indices[index++] = bottomLeftCorner;\n indices[index] = bottomLeftCorner + length;\n }\n\n geo.indices = indices;\n\n return geo;\n}\n\n/**\n * A description of the outline of a a cartographic rectangle on an ellipsoid centered at the origin.\n *\n * @alias RectangleOutlineGeometry\n * @constructor\n *\n * @param {Object} options Object with the following properties:\n * @param {Rectangle} options.rectangle A cartographic rectangle with north, south, east and west properties in radians.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the rectangle lies.\n * @param {Number} [options.granularity=CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n * @param {Number} [options.height=0.0] The distance in meters between the rectangle and the ellipsoid surface.\n * @param {Number} [options.rotation=0.0] The rotation of the rectangle, in radians. A positive rotation is counter-clockwise.\n * @param {Number} [options.extrudedHeight] The distance in meters between the rectangle's extruded face and the ellipsoid surface.\n *\n * @exception {DeveloperError} options.rectangle.north must be in the interval [-Pi/2, Pi/2].\n * @exception {DeveloperError} options.rectangle.south must be in the interval [-Pi/2, Pi/2].\n * @exception {DeveloperError} options.rectangle.east must be in the interval [-Pi, Pi].\n * @exception {DeveloperError} options.rectangle.west must be in the interval [-Pi, Pi].\n * @exception {DeveloperError} options.rectangle.north must be greater than rectangle.south.\n *\n * @see RectangleOutlineGeometry#createGeometry\n *\n * @example\n * const rectangle = new Cesium.RectangleOutlineGeometry({\n * ellipsoid : Cesium.Ellipsoid.WGS84,\n * rectangle : Cesium.Rectangle.fromDegrees(-80.0, 39.0, -74.0, 42.0),\n * height : 10000.0\n * });\n * const geometry = Cesium.RectangleOutlineGeometry.createGeometry(rectangle);\n */\nfunction RectangleOutlineGeometry(options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n const rectangle = options.rectangle;\n const granularity = defaultValue(\n options.granularity,\n CesiumMath.RADIANS_PER_DEGREE\n );\n const ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);\n const rotation = defaultValue(options.rotation, 0.0);\n\n //>>includeStart('debug', pragmas.debug);\n if (!defined(rectangle)) {\n throw new DeveloperError(\"rectangle is required.\");\n }\n Rectangle.validate(rectangle);\n if (rectangle.north < rectangle.south) {\n throw new DeveloperError(\n \"options.rectangle.north must be greater than options.rectangle.south\"\n );\n }\n //>>includeEnd('debug');\n\n const height = defaultValue(options.height, 0.0);\n const extrudedHeight = defaultValue(options.extrudedHeight, height);\n\n this._rectangle = Rectangle.clone(rectangle);\n this._granularity = granularity;\n this._ellipsoid = ellipsoid;\n this._surfaceHeight = Math.max(height, extrudedHeight);\n this._rotation = rotation;\n this._extrudedHeight = Math.min(height, extrudedHeight);\n this._offsetAttribute = options.offsetAttribute;\n this._workerName = \"createRectangleOutlineGeometry\";\n}\n\n/**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\nRectangleOutlineGeometry.packedLength =\n Rectangle.packedLength + Ellipsoid.packedLength + 5;\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {RectangleOutlineGeometry} 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 */\nRectangleOutlineGeometry.pack = function (value, array, startingIndex) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(value)) {\n throw new DeveloperError(\"value is required\");\n }\n\n if (!defined(array)) {\n throw new DeveloperError(\"array is required\");\n }\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n Rectangle.pack(value._rectangle, array, startingIndex);\n startingIndex += Rectangle.packedLength;\n\n Ellipsoid.pack(value._ellipsoid, array, startingIndex);\n startingIndex += Ellipsoid.packedLength;\n\n array[startingIndex++] = value._granularity;\n array[startingIndex++] = value._surfaceHeight;\n array[startingIndex++] = value._rotation;\n array[startingIndex++] = value._extrudedHeight;\n array[startingIndex] = defaultValue(value._offsetAttribute, -1);\n\n return array;\n};\n\nconst scratchRectangle = new Rectangle();\nconst scratchEllipsoid = Ellipsoid.clone(Ellipsoid.UNIT_SPHERE);\nconst scratchOptions = {\n rectangle: scratchRectangle,\n ellipsoid: scratchEllipsoid,\n granularity: undefined,\n height: undefined,\n rotation: undefined,\n extrudedHeight: 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 {RectangleOutlineGeometry} [result] The object into which to store the result.\n * @returns {RectangleOutlineGeometry} The modified result parameter or a new Quaternion instance if one was not provided.\n */\nRectangleOutlineGeometry.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 rectangle = Rectangle.unpack(array, startingIndex, scratchRectangle);\n startingIndex += Rectangle.packedLength;\n\n const ellipsoid = Ellipsoid.unpack(array, startingIndex, scratchEllipsoid);\n startingIndex += Ellipsoid.packedLength;\n\n const granularity = array[startingIndex++];\n const height = array[startingIndex++];\n const rotation = array[startingIndex++];\n const extrudedHeight = array[startingIndex++];\n const offsetAttribute = array[startingIndex];\n\n if (!defined(result)) {\n scratchOptions.granularity = granularity;\n scratchOptions.height = height;\n scratchOptions.rotation = rotation;\n scratchOptions.extrudedHeight = extrudedHeight;\n scratchOptions.offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n\n return new RectangleOutlineGeometry(scratchOptions);\n }\n\n result._rectangle = Rectangle.clone(rectangle, result._rectangle);\n result._ellipsoid = Ellipsoid.clone(ellipsoid, result._ellipsoid);\n result._surfaceHeight = height;\n result._rotation = rotation;\n result._extrudedHeight = extrudedHeight;\n result._offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n\n return result;\n};\n\nconst nwScratch = new Cartographic();\n/**\n * Computes the geometric representation of an outline of a rectangle, including its vertices, indices, and a bounding sphere.\n *\n * @param {RectangleOutlineGeometry} rectangleGeometry A description of the rectangle outline.\n * @returns {Geometry|undefined} The computed vertices and indices.\n *\n * @exception {DeveloperError} Rotated rectangle is invalid.\n */\nRectangleOutlineGeometry.createGeometry = function (rectangleGeometry) {\n const rectangle = rectangleGeometry._rectangle;\n const ellipsoid = rectangleGeometry._ellipsoid;\n const computedOptions = RectangleGeometryLibrary.computeOptions(\n rectangle,\n rectangleGeometry._granularity,\n rectangleGeometry._rotation,\n 0,\n rectangleScratch,\n nwScratch\n );\n\n let geometry;\n let boundingSphere;\n\n if (\n CesiumMath.equalsEpsilon(\n rectangle.north,\n rectangle.south,\n CesiumMath.EPSILON10\n ) ||\n CesiumMath.equalsEpsilon(\n rectangle.east,\n rectangle.west,\n CesiumMath.EPSILON10\n )\n ) {\n return undefined;\n }\n\n const surfaceHeight = rectangleGeometry._surfaceHeight;\n const extrudedHeight = rectangleGeometry._extrudedHeight;\n const extrude = !CesiumMath.equalsEpsilon(\n surfaceHeight,\n extrudedHeight,\n 0,\n CesiumMath.EPSILON2\n );\n let offsetValue;\n if (extrude) {\n geometry = constructExtrudedRectangle(rectangleGeometry, computedOptions);\n if (defined(rectangleGeometry._offsetAttribute)) {\n const size = geometry.attributes.position.values.length / 3;\n let offsetAttribute = new Uint8Array(size);\n if (rectangleGeometry._offsetAttribute === GeometryOffsetAttribute.TOP) {\n offsetAttribute = arrayFill(offsetAttribute, 1, 0, size / 2);\n } else {\n offsetValue =\n rectangleGeometry._offsetAttribute === GeometryOffsetAttribute.NONE\n ? 0\n : 1;\n offsetAttribute = arrayFill(offsetAttribute, offsetValue);\n }\n\n geometry.attributes.applyOffset = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: offsetAttribute,\n });\n }\n const topBS = BoundingSphere.fromRectangle3D(\n rectangle,\n ellipsoid,\n surfaceHeight,\n topBoundingSphere\n );\n const bottomBS = BoundingSphere.fromRectangle3D(\n rectangle,\n ellipsoid,\n extrudedHeight,\n bottomBoundingSphere\n );\n boundingSphere = BoundingSphere.union(topBS, bottomBS);\n } else {\n geometry = constructRectangle(rectangleGeometry, computedOptions);\n geometry.attributes.position.values = PolygonPipeline.scaleToGeodeticHeight(\n geometry.attributes.position.values,\n surfaceHeight,\n ellipsoid,\n false\n );\n\n if (defined(rectangleGeometry._offsetAttribute)) {\n const length = geometry.attributes.position.values.length;\n const applyOffset = new Uint8Array(length / 3);\n offsetValue =\n rectangleGeometry._offsetAttribute === GeometryOffsetAttribute.NONE\n ? 0\n : 1;\n arrayFill(applyOffset, offsetValue);\n geometry.attributes.applyOffset = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: applyOffset,\n });\n }\n\n boundingSphere = BoundingSphere.fromRectangle3D(\n rectangle,\n ellipsoid,\n surfaceHeight\n );\n }\n\n return new Geometry({\n attributes: geometry.attributes,\n indices: geometry.indices,\n primitiveType: PrimitiveType.LINES,\n boundingSphere: boundingSphere,\n offsetAttribute: rectangleGeometry._offsetAttribute,\n });\n};\nexport default RectangleOutlineGeometry;\n","import defined from \"../Core/defined.js\";\nimport Ellipsoid from \"../Core/Ellipsoid.js\";\nimport Rectangle from \"../Core/Rectangle.js\";\nimport RectangleOutlineGeometry from \"../Core/RectangleOutlineGeometry.js\";\n\nfunction createRectangleOutlineGeometry(rectangleGeometry, offset) {\n if (defined(offset)) {\n rectangleGeometry = RectangleOutlineGeometry.unpack(\n rectangleGeometry,\n offset\n );\n }\n rectangleGeometry._ellipsoid = Ellipsoid.clone(rectangleGeometry._ellipsoid);\n rectangleGeometry._rectangle = Rectangle.clone(rectangleGeometry._rectangle);\n return RectangleOutlineGeometry.createGeometry(rectangleGeometry);\n}\nexport default createRectangleOutlineGeometry;\n"],"names":["BoundingSphere","Cartesian3","Rectangle","RectangleGeometryLibrary","IndexDatatype","Geometry","GeometryAttributes","PrimitiveType","GeometryAttribute","ComponentDatatype","PolygonPipeline","defaultValue","CesiumMath","Ellipsoid","defined","DeveloperError","Cartographic","GeometryOffsetAttribute","arrayFill"],"mappings":"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"}