reduce method
Implementation
String reduce(String path){
List<String> tosplit = path.split('z');
Map<String,Point> points = {};
Map<String,Edge> edges = {};
List<String> edgesToRemove = [];
String sort(List<double> edge){
List<double> temp = [edge[2],edge[3],edge[0],edge[1]];
temp.sort();
return temp.toString().replaceAll(' ', '');
}
//get edges poits and ploys
for(int i = 0; i < tosplit.length; i++){
List<String> temp = tosplit[i].replaceAll('M', '').split('L');
if(temp.first != ''){
for(int j = 0; j < temp.length; j++){
List<String> points1 = temp[j].split(',');
int k = j != temp.length-1?j+1:0;
List<String> points2 = temp[k].split(',');
String p1Loc = temp[j].replaceAll(' ', '');
points[p1Loc] = Point(
double.parse(points1[0]),
double.parse(points1[1])
);
String p2Loc = temp[k].replaceAll(' ', '');
points[p2Loc] = Point(
double.parse(points2[0]),
double.parse(points2[1])
);
String edgeLoc = sort([points[p1Loc]!.x,points[p1Loc]!.y,points[p2Loc]!.x,points[p2Loc]!.y]);
if(edges[edgeLoc] != null){
edgesToRemove.add(edgeLoc);
}
edges[edgeLoc] = Edge(p1Loc,p2Loc);
}
}
}
for(int i = 0; i < edgesToRemove.length;i++){
edges.remove(edgesToRemove[i]);
}
List<Polygon>? polys = getPolys(edges);
//polys = removeInteriorPolygons(polys,points);
return placePoints(polys,points);
}