{"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} 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} 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,\n z?: string\n): FeatureCollection {\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"]}