/// <summary> /// Agrega una nueva arista a la lista si es que ya no hay otra igual. /// Devuelve el indice de la nuevo arista o de la que ya estaba. /// </summary> public static int addEdgeToListIfUnique(List <EditPolyEdge> edges, EditPolyEdge e, out bool newEdgeAdded) { for (int i = 0; i < edges.Count; i++) { if (EditablePolyUtils.sameEdge(edges[i], e)) { newEdgeAdded = false; return(i); } } newEdgeAdded = true; e.faces = new List <EditPolyPolygon>(); edges.Add(e); return(edges.Count - 1); }
/// <summary> /// Busca si ambos poligonos tienen una arista igual. /// Si encontro retorna el indice de la arista igual de cada poligono. /// </summary> public static bool findShareEdgeBetweenPolygons(EditPolyPolygon p1, EditPolyPolygon p2, out int p1Edge, out int p2Edge) { for (int i = 0; i < p1.edges.Count; i++) { for (int j = 0; j < p2.edges.Count; j++) { if (EditablePolyUtils.sameEdge(p1.edges[i], p2.edges[j])) { p1Edge = i; p2Edge = j; return(true); } } } p1Edge = -1; p2Edge = -1; return(false); }