{"version":3,"file":"createVectorTileClampedPolylines.js","sources":["../../../../Source/WorkersES6/createVectorTileClampedPolylines.js"],"sourcesContent":["import AttributeCompression from \"../Core/AttributeCompression.js\";\nimport Cartesian3 from \"../Core/Cartesian3.js\";\nimport Cartographic from \"../Core/Cartographic.js\";\nimport combine from \"../Core/combine.js\";\nimport Ellipsoid from \"../Core/Ellipsoid.js\";\nimport IndexDatatype from \"../Core/IndexDatatype.js\";\nimport CesiumMath from \"../Core/Math.js\";\nimport Rectangle from \"../Core/Rectangle.js\";\nimport createTaskProcessorWorker from \"./createTaskProcessorWorker.js\";\n\nconst MAX_SHORT = 32767;\nconst MITER_BREAK = Math.cos(CesiumMath.toRadians(150.0));\n\nconst scratchBVCartographic = new Cartographic();\nconst scratchEncodedPosition = new Cartesian3();\n\nfunction decodePositions(\n uBuffer,\n vBuffer,\n heightBuffer,\n rectangle,\n minimumHeight,\n maximumHeight,\n ellipsoid\n) {\n const positionsLength = uBuffer.length;\n const decodedPositions = new Float64Array(positionsLength * 3);\n for (let i = 0; i < positionsLength; ++i) {\n const u = uBuffer[i];\n const v = vBuffer[i];\n const h = heightBuffer[i];\n\n const lon = CesiumMath.lerp(rectangle.west, rectangle.east, u / MAX_SHORT);\n const lat = CesiumMath.lerp(\n rectangle.south,\n rectangle.north,\n v / MAX_SHORT\n );\n const alt = CesiumMath.lerp(minimumHeight, maximumHeight, h / MAX_SHORT);\n\n const cartographic = Cartographic.fromRadians(\n lon,\n lat,\n alt,\n scratchBVCartographic\n );\n const decodedPosition = ellipsoid.cartographicToCartesian(\n cartographic,\n scratchEncodedPosition\n );\n Cartesian3.pack(decodedPosition, decodedPositions, i * 3);\n }\n return decodedPositions;\n}\n\nfunction getPositionOffsets(counts) {\n const countsLength = counts.length;\n const positionOffsets = new Uint32Array(countsLength + 1);\n let offset = 0;\n for (let i = 0; i < countsLength; ++i) {\n positionOffsets[i] = offset;\n offset += counts[i];\n }\n positionOffsets[countsLength] = offset;\n return positionOffsets;\n}\n\nconst previousCompressedCartographicScratch = new Cartographic();\nconst currentCompressedCartographicScratch = new Cartographic();\nfunction removeDuplicates(uBuffer, vBuffer, heightBuffer, counts) {\n const countsLength = counts.length;\n const positionsLength = uBuffer.length;\n const markRemoval = new Uint8Array(positionsLength);\n const previous = previousCompressedCartographicScratch;\n const current = currentCompressedCartographicScratch;\n let offset = 0;\n for (let i = 0; i < countsLength; i++) {\n const count = counts[i];\n let updatedCount = count;\n for (let j = 1; j < count; j++) {\n const index = offset + j;\n const previousIndex = index - 1;\n current.longitude = uBuffer[index];\n current.latitude = vBuffer[index];\n previous.longitude = uBuffer[previousIndex];\n previous.latitude = vBuffer[previousIndex];\n\n if (Cartographic.equals(current, previous)) {\n updatedCount--;\n markRemoval[previousIndex] = 1;\n }\n }\n counts[i] = updatedCount;\n offset += count;\n }\n\n let nextAvailableIndex = 0;\n for (let k = 0; k < positionsLength; k++) {\n if (markRemoval[k] !== 1) {\n uBuffer[nextAvailableIndex] = uBuffer[k];\n vBuffer[nextAvailableIndex] = vBuffer[k];\n heightBuffer[nextAvailableIndex] = heightBuffer[k];\n nextAvailableIndex++;\n }\n }\n}\n\nfunction VertexAttributesAndIndices(volumesCount) {\n const vertexCount = volumesCount * 8;\n const vec3Floats = vertexCount * 3;\n const vec4Floats = vertexCount * 4;\n this.startEllipsoidNormals = new Float32Array(vec3Floats);\n this.endEllipsoidNormals = new Float32Array(vec3Floats);\n this.startPositionAndHeights = new Float32Array(vec4Floats);\n this.startFaceNormalAndVertexCornerIds = new Float32Array(vec4Floats);\n this.endPositionAndHeights = new Float32Array(vec4Floats);\n this.endFaceNormalAndHalfWidths = new Float32Array(vec4Floats);\n this.vertexBatchIds = new Uint16Array(vertexCount);\n\n this.indices = IndexDatatype.createTypedArray(vertexCount, 36 * volumesCount);\n\n this.vec3Offset = 0;\n this.vec4Offset = 0;\n this.batchIdOffset = 0;\n this.indexOffset = 0;\n\n this.volumeStartIndex = 0;\n}\n\nconst towardCurrScratch = new Cartesian3();\nconst towardNextScratch = new Cartesian3();\nfunction computeMiteredNormal(\n previousPosition,\n position,\n nextPosition,\n ellipsoidSurfaceNormal,\n result\n) {\n const towardNext = Cartesian3.subtract(\n nextPosition,\n position,\n towardNextScratch\n );\n let towardCurr = Cartesian3.subtract(\n position,\n previousPosition,\n towardCurrScratch\n );\n Cartesian3.normalize(towardNext, towardNext);\n Cartesian3.normalize(towardCurr, towardCurr);\n\n if (Cartesian3.dot(towardNext, towardCurr) < MITER_BREAK) {\n towardCurr = Cartesian3.multiplyByScalar(\n towardCurr,\n -1.0,\n towardCurrScratch\n );\n }\n\n Cartesian3.add(towardNext, towardCurr, result);\n if (Cartesian3.equals(result, Cartesian3.ZERO)) {\n result = Cartesian3.subtract(previousPosition, position);\n }\n\n // Make sure the normal is orthogonal to the ellipsoid surface normal\n Cartesian3.cross(result, ellipsoidSurfaceNormal, result);\n Cartesian3.cross(ellipsoidSurfaceNormal, result, result);\n Cartesian3.normalize(result, result);\n return result;\n}\n\n// Winding order is reversed so each segment's volume is inside-out\n// 3-----------7\n// /| left /|\n// / | 1 / |\n// 2-----------6 5 end\n// | / | /\n// start |/ right |/\n// 0-----------4\n//\nconst REFERENCE_INDICES = [\n 0,\n 2,\n 6,\n 0,\n 6,\n 4, // right\n 0,\n 1,\n 3,\n 0,\n 3,\n 2, // start face\n 0,\n 4,\n 5,\n 0,\n 5,\n 1, // bottom\n 5,\n 3,\n 1,\n 5,\n 7,\n 3, // left\n 7,\n 5,\n 4,\n 7,\n 4,\n 6, // end face\n 7,\n 6,\n 2,\n 7,\n 2,\n 3, // top\n];\nconst REFERENCE_INDICES_LENGTH = REFERENCE_INDICES.length;\n\nconst positionScratch = new Cartesian3();\nconst scratchStartEllipsoidNormal = new Cartesian3();\nconst scratchStartFaceNormal = new Cartesian3();\nconst scratchEndEllipsoidNormal = new Cartesian3();\nconst scratchEndFaceNormal = new Cartesian3();\nVertexAttributesAndIndices.prototype.addVolume = function (\n preStartRTC,\n startRTC,\n endRTC,\n postEndRTC,\n startHeight,\n endHeight,\n halfWidth,\n batchId,\n center,\n ellipsoid\n) {\n let position = Cartesian3.add(startRTC, center, positionScratch);\n const startEllipsoidNormal = ellipsoid.geodeticSurfaceNormal(\n position,\n scratchStartEllipsoidNormal\n );\n position = Cartesian3.add(endRTC, center, positionScratch);\n const endEllipsoidNormal = ellipsoid.geodeticSurfaceNormal(\n position,\n scratchEndEllipsoidNormal\n );\n\n const startFaceNormal = computeMiteredNormal(\n preStartRTC,\n startRTC,\n endRTC,\n startEllipsoidNormal,\n scratchStartFaceNormal\n );\n const endFaceNormal = computeMiteredNormal(\n postEndRTC,\n endRTC,\n startRTC,\n endEllipsoidNormal,\n scratchEndFaceNormal\n );\n\n const startEllipsoidNormals = this.startEllipsoidNormals;\n const endEllipsoidNormals = this.endEllipsoidNormals;\n const startPositionAndHeights = this.startPositionAndHeights;\n const startFaceNormalAndVertexCornerIds = this\n .startFaceNormalAndVertexCornerIds;\n const endPositionAndHeights = this.endPositionAndHeights;\n const endFaceNormalAndHalfWidths = this.endFaceNormalAndHalfWidths;\n const vertexBatchIds = this.vertexBatchIds;\n\n let batchIdOffset = this.batchIdOffset;\n let vec3Offset = this.vec3Offset;\n let vec4Offset = this.vec4Offset;\n\n let i;\n for (i = 0; i < 8; i++) {\n Cartesian3.pack(startEllipsoidNormal, startEllipsoidNormals, vec3Offset);\n Cartesian3.pack(endEllipsoidNormal, endEllipsoidNormals, vec3Offset);\n\n Cartesian3.pack(startRTC, startPositionAndHeights, vec4Offset);\n startPositionAndHeights[vec4Offset + 3] = startHeight;\n\n Cartesian3.pack(endRTC, endPositionAndHeights, vec4Offset);\n endPositionAndHeights[vec4Offset + 3] = endHeight;\n\n Cartesian3.pack(\n startFaceNormal,\n startFaceNormalAndVertexCornerIds,\n vec4Offset\n );\n startFaceNormalAndVertexCornerIds[vec4Offset + 3] = i;\n\n Cartesian3.pack(endFaceNormal, endFaceNormalAndHalfWidths, vec4Offset);\n endFaceNormalAndHalfWidths[vec4Offset + 3] = halfWidth;\n\n vertexBatchIds[batchIdOffset++] = batchId;\n\n vec3Offset += 3;\n vec4Offset += 4;\n }\n\n this.batchIdOffset = batchIdOffset;\n this.vec3Offset = vec3Offset;\n this.vec4Offset = vec4Offset;\n const indices = this.indices;\n const volumeStartIndex = this.volumeStartIndex;\n\n const indexOffset = this.indexOffset;\n for (i = 0; i < REFERENCE_INDICES_LENGTH; i++) {\n indices[indexOffset + i] = REFERENCE_INDICES[i] + volumeStartIndex;\n }\n\n this.volumeStartIndex += 8;\n this.indexOffset += REFERENCE_INDICES_LENGTH;\n};\n\nconst scratchRectangle = new Rectangle();\nconst scratchEllipsoid = new Ellipsoid();\nconst scratchCenter = new Cartesian3();\n\nconst scratchPrev = new Cartesian3();\nconst scratchP0 = new Cartesian3();\nconst scratchP1 = new Cartesian3();\nconst scratchNext = new Cartesian3();\nfunction createVectorTileClampedPolylines(parameters, transferableObjects) {\n const encodedPositions = new Uint16Array(parameters.positions);\n const widths = new Uint16Array(parameters.widths);\n const counts = new Uint32Array(parameters.counts);\n const batchIds = new Uint16Array(parameters.batchIds);\n\n // Unpack tile decoding parameters\n const rectangle = scratchRectangle;\n const ellipsoid = scratchEllipsoid;\n const center = scratchCenter;\n const packedBuffer = new Float64Array(parameters.packedBuffer);\n\n let offset = 0;\n const minimumHeight = packedBuffer[offset++];\n const maximumHeight = packedBuffer[offset++];\n\n Rectangle.unpack(packedBuffer, offset, rectangle);\n offset += Rectangle.packedLength;\n\n Ellipsoid.unpack(packedBuffer, offset, ellipsoid);\n offset += Ellipsoid.packedLength;\n\n Cartesian3.unpack(packedBuffer, offset, center);\n\n let i;\n\n // Unpack positions and generate volumes\n let positionsLength = encodedPositions.length / 3;\n const uBuffer = encodedPositions.subarray(0, positionsLength);\n const vBuffer = encodedPositions.subarray(\n positionsLength,\n 2 * positionsLength\n );\n const heightBuffer = encodedPositions.subarray(\n 2 * positionsLength,\n 3 * positionsLength\n );\n AttributeCompression.zigZagDeltaDecode(uBuffer, vBuffer, heightBuffer);\n\n removeDuplicates(uBuffer, vBuffer, heightBuffer, counts);\n\n // Figure out how many volumes and how many vertices there will be.\n const countsLength = counts.length;\n let volumesCount = 0;\n for (i = 0; i < countsLength; i++) {\n const polylinePositionCount = counts[i];\n volumesCount += polylinePositionCount - 1;\n }\n\n const attribsAndIndices = new VertexAttributesAndIndices(volumesCount);\n\n const positions = decodePositions(\n uBuffer,\n vBuffer,\n heightBuffer,\n rectangle,\n minimumHeight,\n maximumHeight,\n ellipsoid,\n center\n );\n\n positionsLength = uBuffer.length;\n const positionsRTC = new Float32Array(positionsLength * 3);\n for (i = 0; i < positionsLength; ++i) {\n positionsRTC[i * 3] = positions[i * 3] - center.x;\n positionsRTC[i * 3 + 1] = positions[i * 3 + 1] - center.y;\n positionsRTC[i * 3 + 2] = positions[i * 3 + 2] - center.z;\n }\n\n let currentPositionIndex = 0;\n let currentHeightIndex = 0;\n for (i = 0; i < countsLength; i++) {\n const polylineVolumeCount = counts[i] - 1;\n const halfWidth = widths[i] * 0.5;\n const batchId = batchIds[i];\n const volumeFirstPositionIndex = currentPositionIndex;\n for (let j = 0; j < polylineVolumeCount; j++) {\n const volumeStart = Cartesian3.unpack(\n positionsRTC,\n currentPositionIndex,\n scratchP0\n );\n const volumeEnd = Cartesian3.unpack(\n positionsRTC,\n currentPositionIndex + 3,\n scratchP1\n );\n\n let startHeight = heightBuffer[currentHeightIndex];\n let endHeight = heightBuffer[currentHeightIndex + 1];\n startHeight = CesiumMath.lerp(\n minimumHeight,\n maximumHeight,\n startHeight / MAX_SHORT\n );\n endHeight = CesiumMath.lerp(\n minimumHeight,\n maximumHeight,\n endHeight / MAX_SHORT\n );\n\n currentHeightIndex++;\n\n let preStart = scratchPrev;\n let postEnd = scratchNext;\n if (j === 0) {\n // Check if this volume is like a loop\n const finalPositionIndex =\n volumeFirstPositionIndex + polylineVolumeCount * 3;\n const finalPosition = Cartesian3.unpack(\n positionsRTC,\n finalPositionIndex,\n scratchPrev\n );\n if (Cartesian3.equals(finalPosition, volumeStart)) {\n Cartesian3.unpack(positionsRTC, finalPositionIndex - 3, preStart);\n } else {\n const offsetPastStart = Cartesian3.subtract(\n volumeStart,\n volumeEnd,\n scratchPrev\n );\n preStart = Cartesian3.add(offsetPastStart, volumeStart, scratchPrev);\n }\n } else {\n Cartesian3.unpack(positionsRTC, currentPositionIndex - 3, preStart);\n }\n\n if (j === polylineVolumeCount - 1) {\n // Check if this volume is like a loop\n const firstPosition = Cartesian3.unpack(\n positionsRTC,\n volumeFirstPositionIndex,\n scratchNext\n );\n if (Cartesian3.equals(firstPosition, volumeEnd)) {\n Cartesian3.unpack(\n positionsRTC,\n volumeFirstPositionIndex + 3,\n postEnd\n );\n } else {\n const offsetPastEnd = Cartesian3.subtract(\n volumeEnd,\n volumeStart,\n scratchNext\n );\n postEnd = Cartesian3.add(offsetPastEnd, volumeEnd, scratchNext);\n }\n } else {\n Cartesian3.unpack(positionsRTC, currentPositionIndex + 6, postEnd);\n }\n\n attribsAndIndices.addVolume(\n preStart,\n volumeStart,\n volumeEnd,\n postEnd,\n startHeight,\n endHeight,\n halfWidth,\n batchId,\n center,\n ellipsoid\n );\n\n currentPositionIndex += 3;\n }\n currentPositionIndex += 3;\n currentHeightIndex++;\n }\n\n const indices = attribsAndIndices.indices;\n\n transferableObjects.push(attribsAndIndices.startEllipsoidNormals.buffer);\n transferableObjects.push(attribsAndIndices.endEllipsoidNormals.buffer);\n transferableObjects.push(attribsAndIndices.startPositionAndHeights.buffer);\n transferableObjects.push(\n attribsAndIndices.startFaceNormalAndVertexCornerIds.buffer\n );\n transferableObjects.push(attribsAndIndices.endPositionAndHeights.buffer);\n transferableObjects.push(attribsAndIndices.endFaceNormalAndHalfWidths.buffer);\n transferableObjects.push(attribsAndIndices.vertexBatchIds.buffer);\n transferableObjects.push(indices.buffer);\n\n let results = {\n indexDatatype:\n indices.BYTES_PER_ELEMENT === 2\n ? IndexDatatype.UNSIGNED_SHORT\n : IndexDatatype.UNSIGNED_INT,\n startEllipsoidNormals: attribsAndIndices.startEllipsoidNormals.buffer,\n endEllipsoidNormals: attribsAndIndices.endEllipsoidNormals.buffer,\n startPositionAndHeights: attribsAndIndices.startPositionAndHeights.buffer,\n startFaceNormalAndVertexCornerIds:\n attribsAndIndices.startFaceNormalAndVertexCornerIds.buffer,\n endPositionAndHeights: attribsAndIndices.endPositionAndHeights.buffer,\n endFaceNormalAndHalfWidths:\n attribsAndIndices.endFaceNormalAndHalfWidths.buffer,\n vertexBatchIds: attribsAndIndices.vertexBatchIds.buffer,\n indices: indices.buffer,\n };\n\n if (parameters.keepDecodedPositions) {\n const positionOffsets = getPositionOffsets(counts);\n transferableObjects.push(positions.buffer, positionOffsets.buffer);\n results = combine(results, {\n decodedPositions: positions.buffer,\n decodedPositionOffsets: positionOffsets.buffer,\n });\n }\n\n return results;\n}\nexport default createTaskProcessorWorker(createVectorTileClampedPolylines);\n"],"names":["CesiumMath","Cartographic","Cartesian3","IndexDatatype","Rectangle","Ellipsoid","AttributeCompression","combine"],"mappings":"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"}