triangulate static method
Implementation
static List<num> triangulate(List<double> data, List<int>? holeIndices, [int? dim]) {
dim = dim ?? 2;
final hasHoles = holeIndices != null && holeIndices.isNotEmpty;
final outerLen = hasHoles ? holeIndices[0] * dim : data.length;
var outerNode = linkedList(data, 0, outerLen, dim, true);
final List<num> triangles = [];
if (outerNode == null || outerNode.next == outerNode.prev) return triangles;
double minX = 0;
double minY = 0;
double maxX;
double maxY;
double x;
double y;
double invSize = 0;
if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);
// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox
if (data.length > 80 * dim) {
minX = maxX = data[0];
minY = maxY = data[1];
for (int i = dim; i < outerLen; i += dim) {
x = data[i];
y = data[i + 1];
if (x < minX) minX = x;
if (y < minY) minY = y;
if (x > maxX) maxX = x;
if (y > maxY) maxY = y;
}
// minX, minY and invSize are later used to transform coords into integers for z-order calculation
invSize = math.max<double>(maxX - minX, maxY - minY);
invSize = invSize != 0 ? 1 / invSize : 0;
}
earcutLinked(outerNode, triangles, dim, minX, minY, invSize, null);
return triangles;
}