{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-tin/dist/cjs/index.cjs","../../index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/turf/turf/packages/turf-tin/dist/cjs/index.cjs","sourcesContent":[null,"// http://en.wikipedia.org/wiki/Delaunay_triangulation\n// https://github.com/ironwallaby/delaunay\nimport { FeatureCollection, Point, Polygon } from \"geojson\";\nimport { featureCollection, polygon } from \"@turf/helpers\";\n\ninterface Pt {\n  x: number;\n  y: number;\n  z?: number;\n  __sentinel?: boolean;\n}\ninterface Vertice {\n  x: number;\n  y: number;\n}\n\n/**\n * Takes a set of {@link Point|points} and creates a\n * [Triangulated Irregular Network](http://en.wikipedia.org/wiki/Triangulated_irregular_network),\n * or a TIN for short, returned as a collection of Polygons. These are often used\n * for developing elevation contour maps or stepped heat visualizations.\n *\n * If an optional z-value property is provided then it is added as properties called `a`, `b`,\n * and `c` representing its value at each of the points that represent the corners of the\n * triangle.\n *\n * @function\n * @param {FeatureCollection<Point>} points input points\n * @param {String} [z] name of the property from which to pull z values\n * This is optional: if not given, then there will be no extra data added to the derived triangles.\n * @returns {FeatureCollection<Polygon>} TIN output\n * @example\n * // generate some random point data\n * var points = turf.randomPoint(30, {bbox: [50, 30, 70, 50]});\n *\n * // add a random property to each point between 0 and 9\n * for (var i = 0; i < points.features.length; i++) {\n *   points.features[i].properties.z = ~~(Math.random() * 9);\n * }\n * var tin = turf.tin(points, 'z');\n *\n * //addToMap\n * var addToMap = [tin, points]\n * for (var i = 0; i < tin.features.length; i++) {\n *   var properties  = tin.features[i].properties;\n *   properties.fill = '#' + properties.a + properties.b + properties.c;\n * }\n */\nfunction tin(\n  points: FeatureCollection<Point, any>,\n  z?: string\n): FeatureCollection<Polygon> {\n  // break down points\n  let isPointZ = false;\n  return featureCollection(\n    triangulate(\n      points.features.map((p) => {\n        const point: Pt = {\n          x: p.geometry.coordinates[0],\n          y: p.geometry.coordinates[1],\n        };\n        if (z) {\n          point.z = p.properties[z];\n        } else if (p.geometry.coordinates.length === 3) {\n          isPointZ = true;\n          point.z = p.geometry.coordinates[2];\n        }\n        return point;\n      })\n    ).map((triangle: any) => {\n      const a = [triangle.a.x, triangle.a.y];\n      const b = [triangle.b.x, triangle.b.y];\n      const c = [triangle.c.x, triangle.c.y];\n      let properties = {};\n\n      // Add z coordinates to triangle points if user passed\n      // them in that way otherwise add it as a property.\n      if (isPointZ) {\n        a.push(triangle.a.z);\n        b.push(triangle.b.z);\n        c.push(triangle.c.z);\n      } else {\n        properties = {\n          a: triangle.a.z,\n          b: triangle.b.z,\n          c: triangle.c.z,\n        };\n      }\n\n      return polygon([[a, b, c, a]], properties);\n    })\n  );\n}\n\nclass Triangle {\n  public a: Pt;\n  public b: Pt;\n  public c: Pt;\n  public x: number;\n  public y: number;\n  public r: number;\n\n  constructor(a: Pt, b: Pt, c: Pt) {\n    this.a = a;\n    this.b = b;\n    this.c = c;\n\n    const A = b.x - a.x;\n    const B = b.y - a.y;\n    const C = c.x - a.x;\n    const D = c.y - a.y;\n    const E = A * (a.x + b.x) + B * (a.y + b.y);\n    const F = C * (a.x + c.x) + D * (a.y + c.y);\n    const G = 2 * (A * (c.y - b.y) - B * (c.x - b.x));\n    let dx;\n    let dy;\n\n    // If the points of the triangle are collinear, then just find the\n    // extremes and use the midpoint as the center of the circumcircle.\n    this.x = (D * E - B * F) / G;\n    this.y = (A * F - C * E) / G;\n    dx = this.x - a.x;\n    dy = this.y - a.y;\n    this.r = dx * dx + dy * dy;\n  }\n}\n\nfunction byX(a: Pt, b: Pt) {\n  return b.x - a.x;\n}\n\nfunction dedup(edges: number[]) {\n  let j = edges.length;\n  let a;\n  let b;\n  let i;\n  let m;\n  let n;\n\n  outer: while (j) {\n    b = edges[--j];\n    a = edges[--j];\n    i = j;\n    while (i) {\n      n = edges[--i];\n      m = edges[--i];\n      if ((a === m && b === n) || (a === n && b === m)) {\n        edges.splice(j, 2);\n        edges.splice(i, 2);\n        j -= 2;\n        continue outer;\n      }\n    }\n  }\n}\n\nfunction triangulate(vertices: Vertice[]) {\n  // Bail if there aren't enough vertices to form any triangles.\n  if (vertices.length < 3) {\n    return [];\n  }\n\n  // Ensure the vertex array is in order of descending X coordinate\n  // (which is needed to ensure a subquadratic runtime), and then find\n  // the bounding box around the points.\n  vertices.sort(byX);\n\n  let i = vertices.length - 1;\n  const xmin = vertices[i].x;\n  const xmax = vertices[0].x;\n  let ymin = vertices[i].y;\n  let ymax = ymin;\n  const epsilon = 1e-12;\n\n  let a;\n  let b;\n  let c;\n  let A;\n  let B;\n  let G;\n\n  while (i--) {\n    if (vertices[i].y < ymin) {\n      ymin = vertices[i].y;\n    }\n    if (vertices[i].y > ymax) {\n      ymax = vertices[i].y;\n    }\n  }\n\n  // Find a supertriangle, which is a triangle that surrounds all the\n  // vertices. This is used like something of a sentinel value to remove\n  // cases in the main algorithm, and is removed before we return any\n  // results.\n\n  // Once found, put it in the \"open\" list. (The \"open\" list is for\n  // triangles who may still need to be considered; the \"closed\" list is\n  // for triangles which do not.)\n  let dx = xmax - xmin;\n  let dy = ymax - ymin;\n  const dmax = dx > dy ? dx : dy;\n  const xmid = (xmax + xmin) * 0.5;\n  const ymid = (ymax + ymin) * 0.5;\n  const open = [\n    new Triangle(\n      {\n        __sentinel: true,\n        x: xmid - 20 * dmax,\n        y: ymid - dmax,\n      },\n      {\n        __sentinel: true,\n        x: xmid,\n        y: ymid + 20 * dmax,\n      },\n      {\n        __sentinel: true,\n        x: xmid + 20 * dmax,\n        y: ymid - dmax,\n      }\n    ),\n  ];\n  const closed = [];\n  const edges: any = [];\n  let j;\n\n  // Incrementally add each vertex to the mesh.\n  i = vertices.length;\n  while (i--) {\n    // For each open triangle, check to see if the current point is\n    // inside it's circumcircle. If it is, remove the triangle and add\n    // it's edges to an edge list.\n    edges.length = 0;\n    j = open.length;\n    while (j--) {\n      // If this point is to the right of this triangle's circumcircle,\n      // then this triangle should never get checked again. Remove it\n      // from the open list, add it to the closed list, and skip.\n      dx = vertices[i].x - open[j].x;\n      if (dx > 0 && dx * dx > open[j].r) {\n        closed.push(open[j]);\n        open.splice(j, 1);\n        continue;\n      }\n\n      // If not, skip this triangle.\n      dy = vertices[i].y - open[j].y;\n      if (dx * dx + dy * dy > open[j].r) {\n        continue;\n      }\n\n      // Remove the triangle and add it's edges to the edge list.\n      edges.push(\n        open[j].a,\n        open[j].b,\n        open[j].b,\n        open[j].c,\n        open[j].c,\n        open[j].a\n      );\n      open.splice(j, 1);\n    }\n\n    // Remove any doubled edges.\n    dedup(edges);\n\n    // Add a new triangle for each edge.\n    j = edges.length;\n    while (j) {\n      b = edges[--j];\n      a = edges[--j];\n      c = vertices[i];\n      // Avoid adding colinear triangles (which have error-prone\n      // circumcircles)\n      A = b.x - a.x;\n      B = b.y - a.y;\n      G = 2 * (A * (c.y - b.y) - B * (c.x - b.x));\n      if (Math.abs(G) > epsilon) {\n        open.push(new Triangle(a, b, c));\n      }\n    }\n  }\n\n  // Copy any remaining open triangles to the closed list, and then\n  // remove any triangles that share a vertex with the supertriangle.\n  Array.prototype.push.apply(closed, open);\n\n  i = closed.length;\n  while (i--) {\n    if (\n      closed[i].a.__sentinel ||\n      closed[i].b.__sentinel ||\n      closed[i].c.__sentinel\n    ) {\n      closed.splice(i, 1);\n    }\n  }\n\n  return closed;\n}\n\nexport { Pt, Vertice, tin };\nexport default tin;\n"]}