{"version":3,"file":"createCoplanarPolygonGeometry.js","sources":["../../../../Source/Core/CoplanarPolygonGeometry.js","../../../../Source/WorkersES6/createCoplanarPolygonGeometry.js"],"sourcesContent":["import arrayRemoveDuplicates from \"./arrayRemoveDuplicates.js\";\nimport BoundingRectangle from \"./BoundingRectangle.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 CoplanarPolygonGeometryLibrary from \"./CoplanarPolygonGeometryLibrary.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport Ellipsoid from \"./Ellipsoid.js\";\nimport Geometry from \"./Geometry.js\";\nimport GeometryAttribute from \"./GeometryAttribute.js\";\nimport GeometryAttributes from \"./GeometryAttributes.js\";\nimport GeometryInstance from \"./GeometryInstance.js\";\nimport GeometryPipeline from \"./GeometryPipeline.js\";\nimport IndexDatatype from \"./IndexDatatype.js\";\nimport CesiumMath from \"./Math.js\";\nimport Matrix3 from \"./Matrix3.js\";\nimport PolygonGeometryLibrary from \"./PolygonGeometryLibrary.js\";\nimport PolygonPipeline from \"./PolygonPipeline.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\nimport Quaternion from \"./Quaternion.js\";\nimport VertexFormat from \"./VertexFormat.js\";\n\nconst scratchPosition = new Cartesian3();\nconst scratchBR = new BoundingRectangle();\nconst stScratch = new Cartesian2();\nconst textureCoordinatesOrigin = new Cartesian2();\nconst scratchNormal = new Cartesian3();\nconst scratchTangent = new Cartesian3();\nconst scratchBitangent = new Cartesian3();\nconst centerScratch = new Cartesian3();\nconst axis1Scratch = new Cartesian3();\nconst axis2Scratch = new Cartesian3();\nconst quaternionScratch = new Quaternion();\nconst textureMatrixScratch = new Matrix3();\nconst tangentRotationScratch = new Matrix3();\nconst surfaceNormalScratch = new Cartesian3();\n\nfunction createGeometryFromPolygon(\n  polygon,\n  vertexFormat,\n  boundingRectangle,\n  stRotation,\n  projectPointTo2D,\n  normal,\n  tangent,\n  bitangent\n) {\n  const positions = polygon.positions;\n  let indices = PolygonPipeline.triangulate(polygon.positions2D, polygon.holes);\n\n  /* If polygon is completely unrenderable, just use the first three vertices */\n  if (indices.length < 3) {\n    indices = [0, 1, 2];\n  }\n\n  const newIndices = IndexDatatype.createTypedArray(\n    positions.length,\n    indices.length\n  );\n  newIndices.set(indices);\n\n  let textureMatrix = textureMatrixScratch;\n  if (stRotation !== 0.0) {\n    let rotation = Quaternion.fromAxisAngle(\n      normal,\n      stRotation,\n      quaternionScratch\n    );\n    textureMatrix = Matrix3.fromQuaternion(rotation, textureMatrix);\n\n    if (vertexFormat.tangent || vertexFormat.bitangent) {\n      rotation = Quaternion.fromAxisAngle(\n        normal,\n        -stRotation,\n        quaternionScratch\n      );\n      const tangentRotation = Matrix3.fromQuaternion(\n        rotation,\n        tangentRotationScratch\n      );\n\n      tangent = Cartesian3.normalize(\n        Matrix3.multiplyByVector(tangentRotation, tangent, tangent),\n        tangent\n      );\n      if (vertexFormat.bitangent) {\n        bitangent = Cartesian3.normalize(\n          Cartesian3.cross(normal, tangent, bitangent),\n          bitangent\n        );\n      }\n    }\n  } else {\n    textureMatrix = Matrix3.clone(Matrix3.IDENTITY, textureMatrix);\n  }\n\n  const stOrigin = textureCoordinatesOrigin;\n  if (vertexFormat.st) {\n    stOrigin.x = boundingRectangle.x;\n    stOrigin.y = boundingRectangle.y;\n  }\n\n  const length = positions.length;\n  const size = length * 3;\n  const flatPositions = new Float64Array(size);\n  const normals = vertexFormat.normal ? new Float32Array(size) : undefined;\n  const tangents = vertexFormat.tangent ? new Float32Array(size) : undefined;\n  const bitangents = vertexFormat.bitangent\n    ? new Float32Array(size)\n    : undefined;\n  const textureCoordinates = vertexFormat.st\n    ? new Float32Array(length * 2)\n    : undefined;\n\n  let positionIndex = 0;\n  let normalIndex = 0;\n  let bitangentIndex = 0;\n  let tangentIndex = 0;\n  let stIndex = 0;\n\n  for (let i = 0; i < length; i++) {\n    const position = positions[i];\n    flatPositions[positionIndex++] = position.x;\n    flatPositions[positionIndex++] = position.y;\n    flatPositions[positionIndex++] = position.z;\n\n    if (vertexFormat.st) {\n      const p = Matrix3.multiplyByVector(\n        textureMatrix,\n        position,\n        scratchPosition\n      );\n      const st = projectPointTo2D(p, stScratch);\n      Cartesian2.subtract(st, stOrigin, st);\n\n      const stx = CesiumMath.clamp(st.x / boundingRectangle.width, 0, 1);\n      const sty = CesiumMath.clamp(st.y / boundingRectangle.height, 0, 1);\n      textureCoordinates[stIndex++] = stx;\n      textureCoordinates[stIndex++] = sty;\n    }\n\n    if (vertexFormat.normal) {\n      normals[normalIndex++] = normal.x;\n      normals[normalIndex++] = normal.y;\n      normals[normalIndex++] = normal.z;\n    }\n\n    if (vertexFormat.tangent) {\n      tangents[tangentIndex++] = tangent.x;\n      tangents[tangentIndex++] = tangent.y;\n      tangents[tangentIndex++] = tangent.z;\n    }\n\n    if (vertexFormat.bitangent) {\n      bitangents[bitangentIndex++] = bitangent.x;\n      bitangents[bitangentIndex++] = bitangent.y;\n      bitangents[bitangentIndex++] = bitangent.z;\n    }\n  }\n\n  const attributes = new GeometryAttributes();\n\n  if (vertexFormat.position) {\n    attributes.position = new GeometryAttribute({\n      componentDatatype: ComponentDatatype.DOUBLE,\n      componentsPerAttribute: 3,\n      values: flatPositions,\n    });\n  }\n\n  if (vertexFormat.normal) {\n    attributes.normal = new GeometryAttribute({\n      componentDatatype: ComponentDatatype.FLOAT,\n      componentsPerAttribute: 3,\n      values: normals,\n    });\n  }\n\n  if (vertexFormat.tangent) {\n    attributes.tangent = new GeometryAttribute({\n      componentDatatype: ComponentDatatype.FLOAT,\n      componentsPerAttribute: 3,\n      values: tangents,\n    });\n  }\n\n  if (vertexFormat.bitangent) {\n    attributes.bitangent = new GeometryAttribute({\n      componentDatatype: ComponentDatatype.FLOAT,\n      componentsPerAttribute: 3,\n      values: bitangents,\n    });\n  }\n\n  if (vertexFormat.st) {\n    attributes.st = new GeometryAttribute({\n      componentDatatype: ComponentDatatype.FLOAT,\n      componentsPerAttribute: 2,\n      values: textureCoordinates,\n    });\n  }\n\n  return new Geometry({\n    attributes: attributes,\n    indices: newIndices,\n    primitiveType: PrimitiveType.TRIANGLES,\n  });\n}\n\n/**\n * A description of a polygon composed of arbitrary coplanar positions.\n *\n * @alias CoplanarPolygonGeometry\n * @constructor\n *\n * @param {Object} options Object with the following properties:\n * @param {PolygonHierarchy} options.polygonHierarchy A polygon hierarchy that can include holes.\n * @param {Number} [options.stRotation=0.0] The rotation of the texture coordinates, in radians. A positive rotation is counter-clockwise.\n * @param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid to be used as a reference.\n *\n * @example\n * const polygonGeometry = new Cesium.CoplanarPolygonGeometry({\n *  polygonHierarchy: new Cesium.PolygonHierarchy(\n *     Cesium.Cartesian3.fromDegreesArrayHeights([\n *      -90.0, 30.0, 0.0,\n *      -90.0, 30.0, 300000.0,\n *      -80.0, 30.0, 300000.0,\n *      -80.0, 30.0, 0.0\n *   ]))\n * });\n *\n */\nfunction CoplanarPolygonGeometry(options) {\n  options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n  const polygonHierarchy = options.polygonHierarchy;\n  //>>includeStart('debug', pragmas.debug);\n  Check.defined(\"options.polygonHierarchy\", polygonHierarchy);\n  //>>includeEnd('debug');\n\n  const vertexFormat = defaultValue(options.vertexFormat, VertexFormat.DEFAULT);\n  this._vertexFormat = VertexFormat.clone(vertexFormat);\n  this._polygonHierarchy = polygonHierarchy;\n  this._stRotation = defaultValue(options.stRotation, 0.0);\n  this._ellipsoid = Ellipsoid.clone(\n    defaultValue(options.ellipsoid, Ellipsoid.WGS84)\n  );\n  this._workerName = \"createCoplanarPolygonGeometry\";\n\n  /**\n   * The number of elements used to pack the object into an array.\n   * @type {Number}\n   */\n  this.packedLength =\n    PolygonGeometryLibrary.computeHierarchyPackedLength(polygonHierarchy) +\n    VertexFormat.packedLength +\n    Ellipsoid.packedLength +\n    2;\n}\n\n/**\n * A description of a coplanar polygon from an array of positions.\n *\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3[]} options.positions An array of positions that defined the corner points of the polygon.\n * @param {VertexFormat} [options.vertexFormat=VertexFormat.DEFAULT] The vertex attributes to be computed.\n * @param {Number} [options.stRotation=0.0] The rotation of the texture coordinates, in radians. A positive rotation is counter-clockwise.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid to be used as a reference.\n * @returns {CoplanarPolygonGeometry}\n *\n * @example\n * // create a polygon from points\n * const polygon = Cesium.CoplanarPolygonGeometry.fromPositions({\n *   positions : Cesium.Cartesian3.fromDegreesArray([\n *     -72.0, 40.0,\n *     -70.0, 35.0,\n *     -75.0, 30.0,\n *     -70.0, 30.0,\n *     -68.0, 40.0\n *   ])\n * });\n * const geometry = Cesium.PolygonGeometry.createGeometry(polygon);\n *\n * @see PolygonGeometry#createGeometry\n */\nCoplanarPolygonGeometry.fromPositions = function (options) {\n  options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n  //>>includeStart('debug', pragmas.debug);\n  Check.defined(\"options.positions\", options.positions);\n  //>>includeEnd('debug');\n\n  const newOptions = {\n    polygonHierarchy: {\n      positions: options.positions,\n    },\n    vertexFormat: options.vertexFormat,\n    stRotation: options.stRotation,\n    ellipsoid: options.ellipsoid,\n  };\n  return new CoplanarPolygonGeometry(newOptions);\n};\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {CoplanarPolygonGeometry} 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 */\nCoplanarPolygonGeometry.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  startingIndex = PolygonGeometryLibrary.packPolygonHierarchy(\n    value._polygonHierarchy,\n    array,\n    startingIndex\n  );\n\n  Ellipsoid.pack(value._ellipsoid, array, startingIndex);\n  startingIndex += Ellipsoid.packedLength;\n\n  VertexFormat.pack(value._vertexFormat, array, startingIndex);\n  startingIndex += VertexFormat.packedLength;\n\n  array[startingIndex++] = value._stRotation;\n  array[startingIndex] = value.packedLength;\n\n  return array;\n};\n\nconst scratchEllipsoid = Ellipsoid.clone(Ellipsoid.UNIT_SPHERE);\nconst scratchVertexFormat = new VertexFormat();\nconst scratchOptions = {\n  polygonHierarchy: {},\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 {CoplanarPolygonGeometry} [result] The object into which to store the result.\n * @returns {CoplanarPolygonGeometry} The modified result parameter or a new CoplanarPolygonGeometry instance if one was not provided.\n */\nCoplanarPolygonGeometry.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 polygonHierarchy = PolygonGeometryLibrary.unpackPolygonHierarchy(\n    array,\n    startingIndex\n  );\n  startingIndex = polygonHierarchy.startingIndex;\n  delete polygonHierarchy.startingIndex;\n\n  const ellipsoid = Ellipsoid.unpack(array, startingIndex, scratchEllipsoid);\n  startingIndex += Ellipsoid.packedLength;\n\n  const vertexFormat = VertexFormat.unpack(\n    array,\n    startingIndex,\n    scratchVertexFormat\n  );\n  startingIndex += VertexFormat.packedLength;\n\n  const stRotation = array[startingIndex++];\n  const packedLength = array[startingIndex];\n\n  if (!defined(result)) {\n    result = new CoplanarPolygonGeometry(scratchOptions);\n  }\n\n  result._polygonHierarchy = polygonHierarchy;\n  result._ellipsoid = Ellipsoid.clone(ellipsoid, result._ellipsoid);\n  result._vertexFormat = VertexFormat.clone(vertexFormat, result._vertexFormat);\n  result._stRotation = stRotation;\n  result.packedLength = packedLength;\n  return result;\n};\n\n/**\n * Computes the geometric representation of an arbitrary coplanar polygon, including its vertices, indices, and a bounding sphere.\n *\n * @param {CoplanarPolygonGeometry} polygonGeometry A description of the polygon.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nCoplanarPolygonGeometry.createGeometry = function (polygonGeometry) {\n  const vertexFormat = polygonGeometry._vertexFormat;\n  const polygonHierarchy = polygonGeometry._polygonHierarchy;\n  const stRotation = polygonGeometry._stRotation;\n\n  let outerPositions = polygonHierarchy.positions;\n  outerPositions = arrayRemoveDuplicates(\n    outerPositions,\n    Cartesian3.equalsEpsilon,\n    true\n  );\n  if (outerPositions.length < 3) {\n    return;\n  }\n\n  let normal = scratchNormal;\n  let tangent = scratchTangent;\n  let bitangent = scratchBitangent;\n  let axis1 = axis1Scratch;\n  const axis2 = axis2Scratch;\n\n  const validGeometry = CoplanarPolygonGeometryLibrary.computeProjectTo2DArguments(\n    outerPositions,\n    centerScratch,\n    axis1,\n    axis2\n  );\n  if (!validGeometry) {\n    return undefined;\n  }\n\n  normal = Cartesian3.cross(axis1, axis2, normal);\n  normal = Cartesian3.normalize(normal, normal);\n\n  if (\n    !Cartesian3.equalsEpsilon(\n      centerScratch,\n      Cartesian3.ZERO,\n      CesiumMath.EPSILON6\n    )\n  ) {\n    const surfaceNormal = polygonGeometry._ellipsoid.geodeticSurfaceNormal(\n      centerScratch,\n      surfaceNormalScratch\n    );\n    if (Cartesian3.dot(normal, surfaceNormal) < 0) {\n      normal = Cartesian3.negate(normal, normal);\n      axis1 = Cartesian3.negate(axis1, axis1);\n    }\n  }\n\n  const projectPoints = CoplanarPolygonGeometryLibrary.createProjectPointsTo2DFunction(\n    centerScratch,\n    axis1,\n    axis2\n  );\n  const projectPoint = CoplanarPolygonGeometryLibrary.createProjectPointTo2DFunction(\n    centerScratch,\n    axis1,\n    axis2\n  );\n\n  if (vertexFormat.tangent) {\n    tangent = Cartesian3.clone(axis1, tangent);\n  }\n  if (vertexFormat.bitangent) {\n    bitangent = Cartesian3.clone(axis2, bitangent);\n  }\n\n  const results = PolygonGeometryLibrary.polygonsFromHierarchy(\n    polygonHierarchy,\n    projectPoints,\n    false\n  );\n  const hierarchy = results.hierarchy;\n  const polygons = results.polygons;\n\n  if (hierarchy.length === 0) {\n    return;\n  }\n  outerPositions = hierarchy[0].outerRing;\n\n  const boundingSphere = BoundingSphere.fromPoints(outerPositions);\n  const boundingRectangle = PolygonGeometryLibrary.computeBoundingRectangle(\n    normal,\n    projectPoint,\n    outerPositions,\n    stRotation,\n    scratchBR\n  );\n\n  const geometries = [];\n  for (let i = 0; i < polygons.length; i++) {\n    const geometryInstance = new GeometryInstance({\n      geometry: createGeometryFromPolygon(\n        polygons[i],\n        vertexFormat,\n        boundingRectangle,\n        stRotation,\n        projectPoint,\n        normal,\n        tangent,\n        bitangent\n      ),\n    });\n\n    geometries.push(geometryInstance);\n  }\n\n  const geometry = GeometryPipeline.combineInstances(geometries)[0];\n  geometry.attributes.position.values = new Float64Array(\n    geometry.attributes.position.values\n  );\n  geometry.indices = IndexDatatype.createTypedArray(\n    geometry.attributes.position.values.length / 3,\n    geometry.indices\n  );\n\n  const attributes = geometry.attributes;\n  if (!vertexFormat.position) {\n    delete attributes.position;\n  }\n  return new Geometry({\n    attributes: attributes,\n    indices: geometry.indices,\n    primitiveType: geometry.primitiveType,\n    boundingSphere: boundingSphere,\n  });\n};\nexport default CoplanarPolygonGeometry;\n","import CoplanarPolygonGeometry from \"../Core/CoplanarPolygonGeometry.js\";\nimport defined from \"../Core/defined.js\";\n\nfunction createCoplanarPolygonGeometry(polygonGeometry, offset) {\n  if (defined(offset)) {\n    polygonGeometry = CoplanarPolygonGeometry.unpack(polygonGeometry, offset);\n  }\n  return CoplanarPolygonGeometry.createGeometry(polygonGeometry);\n}\nexport default createCoplanarPolygonGeometry;\n"],"names":["Cartesian3","BoundingRectangle","Cartesian2","Quaternion","Matrix3","PolygonPipeline","IndexDatatype","CesiumMath","GeometryAttributes","GeometryAttribute","ComponentDatatype","Geometry","PrimitiveType","defaultValue","Check","VertexFormat","Ellipsoid","PolygonGeometryLibrary","defined","arrayRemoveDuplicates","CoplanarPolygonGeometryLibrary","BoundingSphere","GeometryInstance","GeometryPipeline"],"mappings":"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"}