{"version":3,"file":"createSimplePolylineGeometry.js","sources":["../../../../Source/Core/SimplePolylineGeometry.js","../../../../Source/WorkersES6/createSimplePolylineGeometry.js"],"sourcesContent":["import ArcType from \"./ArcType.js\";\nimport BoundingSphere from \"./BoundingSphere.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport Color from \"./Color.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 IndexDatatype from \"./IndexDatatype.js\";\nimport CesiumMath from \"./Math.js\";\nimport PolylinePipeline from \"./PolylinePipeline.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\n\nfunction interpolateColors(p0, p1, color0, color1, minDistance, array, offset) {\n const numPoints = PolylinePipeline.numberOfPoints(p0, p1, minDistance);\n let i;\n\n const r0 = color0.red;\n const g0 = color0.green;\n const b0 = color0.blue;\n const a0 = color0.alpha;\n\n const r1 = color1.red;\n const g1 = color1.green;\n const b1 = color1.blue;\n const a1 = color1.alpha;\n\n if (Color.equals(color0, color1)) {\n for (i = 0; i < numPoints; i++) {\n array[offset++] = Color.floatToByte(r0);\n array[offset++] = Color.floatToByte(g0);\n array[offset++] = Color.floatToByte(b0);\n array[offset++] = Color.floatToByte(a0);\n }\n return offset;\n }\n\n const redPerVertex = (r1 - r0) / numPoints;\n const greenPerVertex = (g1 - g0) / numPoints;\n const bluePerVertex = (b1 - b0) / numPoints;\n const alphaPerVertex = (a1 - a0) / numPoints;\n\n let index = offset;\n for (i = 0; i < numPoints; i++) {\n array[index++] = Color.floatToByte(r0 + i * redPerVertex);\n array[index++] = Color.floatToByte(g0 + i * greenPerVertex);\n array[index++] = Color.floatToByte(b0 + i * bluePerVertex);\n array[index++] = Color.floatToByte(a0 + i * alphaPerVertex);\n }\n\n return index;\n}\n\n/**\n * A description of a polyline modeled as a line strip; the first two positions define a line segment,\n * and each additional position defines a line segment from the previous position.\n *\n * @alias SimplePolylineGeometry\n * @constructor\n *\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3[]} options.positions An array of {@link Cartesian3} defining the positions in the polyline as a line strip.\n * @param {Color[]} [options.colors] An Array of {@link Color} defining the per vertex or per segment colors.\n * @param {Boolean} [options.colorsPerVertex=false] A boolean that determines whether the colors will be flat across each segment of the line or interpolated across the vertices.\n * @param {ArcType} [options.arcType=ArcType.GEODESIC] The type of line the polyline segments must follow.\n * @param {Number} [options.granularity=CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude if options.arcType is not ArcType.NONE. Determines the number of positions in the buffer.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid to be used as a reference.\n *\n * @exception {DeveloperError} At least two positions are required.\n * @exception {DeveloperError} colors has an invalid length.\n *\n * @see SimplePolylineGeometry#createGeometry\n *\n * @example\n * // A polyline with two connected line segments\n * const polyline = new Cesium.SimplePolylineGeometry({\n * positions : Cesium.Cartesian3.fromDegreesArray([\n * 0.0, 0.0,\n * 5.0, 0.0,\n * 5.0, 5.0\n * ])\n * });\n * const geometry = Cesium.SimplePolylineGeometry.createGeometry(polyline);\n */\nfunction SimplePolylineGeometry(options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n const positions = options.positions;\n const colors = options.colors;\n const colorsPerVertex = defaultValue(options.colorsPerVertex, false);\n\n //>>includeStart('debug', pragmas.debug);\n if (!defined(positions) || positions.length < 2) {\n throw new DeveloperError(\"At least two positions are required.\");\n }\n if (\n defined(colors) &&\n ((colorsPerVertex && colors.length < positions.length) ||\n (!colorsPerVertex && colors.length < positions.length - 1))\n ) {\n throw new DeveloperError(\"colors has an invalid length.\");\n }\n //>>includeEnd('debug');\n\n this._positions = positions;\n this._colors = colors;\n this._colorsPerVertex = colorsPerVertex;\n\n this._arcType = defaultValue(options.arcType, ArcType.GEODESIC);\n this._granularity = defaultValue(\n options.granularity,\n CesiumMath.RADIANS_PER_DEGREE\n );\n this._ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);\n this._workerName = \"createSimplePolylineGeometry\";\n\n let numComponents = 1 + positions.length * Cartesian3.packedLength;\n numComponents += defined(colors) ? 1 + colors.length * Color.packedLength : 1;\n\n /**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\n this.packedLength = numComponents + Ellipsoid.packedLength + 3;\n}\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {SimplePolylineGeometry} 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 */\nSimplePolylineGeometry.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 let i;\n\n const positions = value._positions;\n let length = positions.length;\n array[startingIndex++] = length;\n\n for (i = 0; i < length; ++i, startingIndex += Cartesian3.packedLength) {\n Cartesian3.pack(positions[i], array, startingIndex);\n }\n\n const colors = value._colors;\n length = defined(colors) ? colors.length : 0.0;\n array[startingIndex++] = length;\n\n for (i = 0; i < length; ++i, startingIndex += Color.packedLength) {\n Color.pack(colors[i], array, startingIndex);\n }\n\n Ellipsoid.pack(value._ellipsoid, array, startingIndex);\n startingIndex += Ellipsoid.packedLength;\n\n array[startingIndex++] = value._colorsPerVertex ? 1.0 : 0.0;\n array[startingIndex++] = value._arcType;\n array[startingIndex] = value._granularity;\n\n return array;\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 {SimplePolylineGeometry} [result] The object into which to store the result.\n * @returns {SimplePolylineGeometry} The modified result parameter or a new SimplePolylineGeometry instance if one was not provided.\n */\nSimplePolylineGeometry.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 let i;\n\n let length = array[startingIndex++];\n const positions = new Array(length);\n\n for (i = 0; i < length; ++i, startingIndex += Cartesian3.packedLength) {\n positions[i] = Cartesian3.unpack(array, startingIndex);\n }\n\n length = array[startingIndex++];\n const colors = length > 0 ? new Array(length) : undefined;\n\n for (i = 0; i < length; ++i, startingIndex += Color.packedLength) {\n colors[i] = Color.unpack(array, startingIndex);\n }\n\n const ellipsoid = Ellipsoid.unpack(array, startingIndex);\n startingIndex += Ellipsoid.packedLength;\n\n const colorsPerVertex = array[startingIndex++] === 1.0;\n const arcType = array[startingIndex++];\n const granularity = array[startingIndex];\n\n if (!defined(result)) {\n return new SimplePolylineGeometry({\n positions: positions,\n colors: colors,\n ellipsoid: ellipsoid,\n colorsPerVertex: colorsPerVertex,\n arcType: arcType,\n granularity: granularity,\n });\n }\n\n result._positions = positions;\n result._colors = colors;\n result._ellipsoid = ellipsoid;\n result._colorsPerVertex = colorsPerVertex;\n result._arcType = arcType;\n result._granularity = granularity;\n\n return result;\n};\n\nconst scratchArray1 = new Array(2);\nconst scratchArray2 = new Array(2);\nconst generateArcOptionsScratch = {\n positions: scratchArray1,\n height: scratchArray2,\n ellipsoid: undefined,\n minDistance: undefined,\n granularity: undefined,\n};\n\n/**\n * Computes the geometric representation of a simple polyline, including its vertices, indices, and a bounding sphere.\n *\n * @param {SimplePolylineGeometry} simplePolylineGeometry A description of the polyline.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nSimplePolylineGeometry.createGeometry = function (simplePolylineGeometry) {\n const positions = simplePolylineGeometry._positions;\n const colors = simplePolylineGeometry._colors;\n const colorsPerVertex = simplePolylineGeometry._colorsPerVertex;\n const arcType = simplePolylineGeometry._arcType;\n const granularity = simplePolylineGeometry._granularity;\n const ellipsoid = simplePolylineGeometry._ellipsoid;\n\n const minDistance = CesiumMath.chordLength(\n granularity,\n ellipsoid.maximumRadius\n );\n const perSegmentColors = defined(colors) && !colorsPerVertex;\n\n let i;\n const length = positions.length;\n\n let positionValues;\n let numberOfPositions;\n let colorValues;\n let color;\n let offset = 0;\n\n if (arcType === ArcType.GEODESIC || arcType === ArcType.RHUMB) {\n let subdivisionSize;\n let numberOfPointsFunction;\n let generateArcFunction;\n if (arcType === ArcType.GEODESIC) {\n subdivisionSize = CesiumMath.chordLength(\n granularity,\n ellipsoid.maximumRadius\n );\n numberOfPointsFunction = PolylinePipeline.numberOfPoints;\n generateArcFunction = PolylinePipeline.generateArc;\n } else {\n subdivisionSize = granularity;\n numberOfPointsFunction = PolylinePipeline.numberOfPointsRhumbLine;\n generateArcFunction = PolylinePipeline.generateRhumbArc;\n }\n\n const heights = PolylinePipeline.extractHeights(positions, ellipsoid);\n\n const generateArcOptions = generateArcOptionsScratch;\n if (arcType === ArcType.GEODESIC) {\n generateArcOptions.minDistance = minDistance;\n } else {\n generateArcOptions.granularity = granularity;\n }\n generateArcOptions.ellipsoid = ellipsoid;\n\n if (perSegmentColors) {\n let positionCount = 0;\n for (i = 0; i < length - 1; i++) {\n positionCount +=\n numberOfPointsFunction(\n positions[i],\n positions[i + 1],\n subdivisionSize\n ) + 1;\n }\n\n positionValues = new Float64Array(positionCount * 3);\n colorValues = new Uint8Array(positionCount * 4);\n\n generateArcOptions.positions = scratchArray1;\n generateArcOptions.height = scratchArray2;\n\n let ci = 0;\n for (i = 0; i < length - 1; ++i) {\n scratchArray1[0] = positions[i];\n scratchArray1[1] = positions[i + 1];\n\n scratchArray2[0] = heights[i];\n scratchArray2[1] = heights[i + 1];\n\n const pos = generateArcFunction(generateArcOptions);\n\n if (defined(colors)) {\n const segLen = pos.length / 3;\n color = colors[i];\n for (let k = 0; k < segLen; ++k) {\n colorValues[ci++] = Color.floatToByte(color.red);\n colorValues[ci++] = Color.floatToByte(color.green);\n colorValues[ci++] = Color.floatToByte(color.blue);\n colorValues[ci++] = Color.floatToByte(color.alpha);\n }\n }\n\n positionValues.set(pos, offset);\n offset += pos.length;\n }\n } else {\n generateArcOptions.positions = positions;\n generateArcOptions.height = heights;\n positionValues = new Float64Array(\n generateArcFunction(generateArcOptions)\n );\n\n if (defined(colors)) {\n colorValues = new Uint8Array((positionValues.length / 3) * 4);\n\n for (i = 0; i < length - 1; ++i) {\n const p0 = positions[i];\n const p1 = positions[i + 1];\n const c0 = colors[i];\n const c1 = colors[i + 1];\n offset = interpolateColors(\n p0,\n p1,\n c0,\n c1,\n minDistance,\n colorValues,\n offset\n );\n }\n\n const lastColor = colors[length - 1];\n colorValues[offset++] = Color.floatToByte(lastColor.red);\n colorValues[offset++] = Color.floatToByte(lastColor.green);\n colorValues[offset++] = Color.floatToByte(lastColor.blue);\n colorValues[offset++] = Color.floatToByte(lastColor.alpha);\n }\n }\n } else {\n numberOfPositions = perSegmentColors ? length * 2 - 2 : length;\n positionValues = new Float64Array(numberOfPositions * 3);\n colorValues = defined(colors)\n ? new Uint8Array(numberOfPositions * 4)\n : undefined;\n\n let positionIndex = 0;\n let colorIndex = 0;\n\n for (i = 0; i < length; ++i) {\n const p = positions[i];\n\n if (perSegmentColors && i > 0) {\n Cartesian3.pack(p, positionValues, positionIndex);\n positionIndex += 3;\n\n color = colors[i - 1];\n colorValues[colorIndex++] = Color.floatToByte(color.red);\n colorValues[colorIndex++] = Color.floatToByte(color.green);\n colorValues[colorIndex++] = Color.floatToByte(color.blue);\n colorValues[colorIndex++] = Color.floatToByte(color.alpha);\n }\n\n if (perSegmentColors && i === length - 1) {\n break;\n }\n\n Cartesian3.pack(p, positionValues, positionIndex);\n positionIndex += 3;\n\n if (defined(colors)) {\n color = colors[i];\n colorValues[colorIndex++] = Color.floatToByte(color.red);\n colorValues[colorIndex++] = Color.floatToByte(color.green);\n colorValues[colorIndex++] = Color.floatToByte(color.blue);\n colorValues[colorIndex++] = Color.floatToByte(color.alpha);\n }\n }\n }\n\n const attributes = new GeometryAttributes();\n attributes.position = new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: positionValues,\n });\n\n if (defined(colors)) {\n attributes.color = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 4,\n values: colorValues,\n normalize: true,\n });\n }\n\n numberOfPositions = positionValues.length / 3;\n const numberOfIndices = (numberOfPositions - 1) * 2;\n const indices = IndexDatatype.createTypedArray(\n numberOfPositions,\n numberOfIndices\n );\n\n let index = 0;\n for (i = 0; i < numberOfPositions - 1; ++i) {\n indices[index++] = i;\n indices[index++] = i + 1;\n }\n\n return new Geometry({\n attributes: attributes,\n indices: indices,\n primitiveType: PrimitiveType.LINES,\n boundingSphere: BoundingSphere.fromPoints(positions),\n });\n};\nexport default SimplePolylineGeometry;\n","import defined from \"../Core/defined.js\";\nimport Ellipsoid from \"../Core/Ellipsoid.js\";\nimport SimplePolylineGeometry from \"../Core/SimplePolylineGeometry.js\";\n\nfunction createSimplePolylineGeometry(simplePolylineGeometry, offset) {\n if (defined(offset)) {\n simplePolylineGeometry = SimplePolylineGeometry.unpack(\n simplePolylineGeometry,\n offset\n );\n }\n simplePolylineGeometry._ellipsoid = Ellipsoid.clone(\n simplePolylineGeometry._ellipsoid\n );\n return SimplePolylineGeometry.createGeometry(simplePolylineGeometry);\n}\nexport default createSimplePolylineGeometry;\n"],"names":["PolylinePipeline","Color","defaultValue","defined","DeveloperError","ArcType","CesiumMath","Ellipsoid","Cartesian3","GeometryAttributes","GeometryAttribute","ComponentDatatype","IndexDatatype","Geometry","PrimitiveType","BoundingSphere"],"mappings":"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"}