private static void ClipNextEar(ICollection <Triangle> triangles) { //find the triangle Vertex ear = earVertices[0].Value; Vertex prev = polygonVertices[polygonVertices.IndexOf(ear) - 1].Value; Vertex next = polygonVertices[polygonVertices.IndexOf(ear) + 1].Value; triangles.Add(new Triangle(ear, next, prev)); //remove the ear from the shape earVertices.RemoveAt(0); polygonVertices.RemoveAt(polygonVertices.IndexOf(ear)); //Log("\nRemoved Ear: {0}", ear); //validate the neighboring vertices ValidateAdjacentVertex(prev); ValidateAdjacentVertex(next); //write out the states of each of the lists #if DEBUG /*StringBuilder rString = new StringBuilder(); * foreach (Vertex v in reflexVertices) * rString.Append(string.Format("{0}, ", v.Index)); * Log("Reflex Vertices: {0}", rString); * StringBuilder cString = new StringBuilder(); * foreach (Vertex v in convexVertices) * cString.Append(string.Format("{0}, ", v.Index)); * Log("Convex Vertices: {0}", cString); * StringBuilder eString = new StringBuilder(); * foreach (Vertex v in earVertices) * eString.Append(string.Format("{0}, ", v.Index)); * Log("Ear Vertices: {0}", eString);*/ #endif }
private static void ClipNextEar(ICollection <Triangle> triangles) { //find the triangle Vertex ear = earVertices[0].Value; Vertex prev = polygonVertices[polygonVertices.IndexOf(ear) - 1].Value; Vertex next = polygonVertices[polygonVertices.IndexOf(ear) + 1].Value; triangles.Add(new Triangle(ear, next, prev)); //remove the ear from the shape earVertices.RemoveAt(0); polygonVertices.RemoveAt(polygonVertices.IndexOf(ear)); //validate the neighboring vertices ValidateAdjacentVertex(prev); ValidateAdjacentVertex(next); }