void RegenerateLines() { foreach (var line in lines) { Destroy(line); } lines.Clear(); var triangles = BowyerWatson.Triangulate(points); var graph = new HashSet <Edge>(); foreach (var triangle in triangles) { graph.UnionWith(triangle.edges); } var tree = Kruskal.MinimumSpanningTree(graph); foreach (var edge in tree) { Vector3 p1 = new Vector3(edge.a.x, edge.a.y); Vector3 p2 = new Vector3(edge.b.x, edge.b.y); var line = new GameObject(); var lineRenderer = line.AddComponent <LineRenderer>(); lineRenderer.material = lineMaterial; lineRenderer.SetPosition(0, p1); lineRenderer.SetPosition(1, p2); lines.Add(line); } }
void AddTriangleIfInCell(BowyerWatson <WorleyNoise.CellData> .Triangle triangle) { bool triangleInCell = false; int floatIndex = 0; var adjacentCellPair = new WorleyNoise.CellDataX2(); for (int i = 0; i < 3; i++) { if (triangle[i].pos.Equals(cellPosition)) { triangleInCell = true; } else { if (floatIndex > 1) { continue; } adjacentCellPair[floatIndex] = triangle[i].pointObject; floatIndex++; } } if (triangleInCell) { cellVertices.Add(triangle.circumcircle.center); adjacentCells.Add(SortCellPairClockwise(adjacentCellPair)); vertexRotations.Add(vectorUtil.RotationFromUp(triangle.circumcircle.center, cellPosition)); } }
void DrawTriangle(BowyerWatson <PositionWrapper> .Triangle triangle, Color color) { //Debug.DrawLine(triangle.a.pos, triangle.b.pos, color); //Debug.DrawLine(triangle.b.pos, triangle.c.pos, color); //Debug.DrawLine(triangle.c.pos, triangle.a.pos, color); Debug.DrawLine(triangle.a.pointObject.worldPosition, triangle.b.pointObject.worldPosition, color); Debug.DrawLine(triangle.b.pointObject.worldPosition, triangle.c.pointObject.worldPosition, color); Debug.DrawLine(triangle.c.pointObject.worldPosition, triangle.a.pointObject.worldPosition, color); }