// cria a representação visual do diagrama de delaunay // cria um grafo a partir do resultado da triangulação public void BuildGraph() { var orderedLocations = new List <MapLocation>(); foreach (var item in Diagram.Triangulation.Vertices) { orderedLocations.Add(Locations.Find(i => i.IsEqualTo(item))); } LocationGraph.AddNodes(orderedLocations); int[] indices = new int[Diagram.Triangulation.Triangles.Count * 3]; // separa cada triangulo em 3 segmentos de reta int j = 0; for (int i = 0; i < Diagram.Triangulation.Triangles.Count; i += 3) { indices[j] = Diagram.Triangulation.Triangles[i]; indices[j + 1] = Diagram.Triangulation.Triangles[i + 1]; indices[j + 2] = Diagram.Triangulation.Triangles[i + 1]; indices[j + 3] = Diagram.Triangulation.Triangles[i + 2]; indices[j + 4] = Diagram.Triangulation.Triangles[i + 2]; indices[j + 5] = Diagram.Triangulation.Triangles[i]; j += 6; } LocationGraph.CreateEdges(indices, (p, q) => Vector3.Distance(p.transform.position, q.transform.position)); DelaunayMesh = CreateTriangulationMesh(Diagram, indices); GraphScreen.CreateDistances(LocationGraph); }