private static PointF[] GetTrianglePointArray(CircularLinkedList <Vector2> list) { LinkedListNode <Vector2> currentNode = list.First; PointF[] result = new PointF[3]; for (int i = 0; i < 3; i++) { result[i] = new PointF(currentNode.Value.X, currentNode.Value.Y); currentNode = list.NextOrFirst(currentNode); } return(result); }
private static LinkedListNode <Vector2> TraverseList(CircularLinkedList <Vector2> contour, CircularLinkedList <Vector2> entering, CircularLinkedList <Vector2> exiting, CircularLinkedList <Vector2> polygon, LinkedListNode <Vector2> currentNode, Vector2 startNode, CircularLinkedList <Vector2> contour2) { LinkedListNode <Vector2> contourNode = contour.Find(currentNode.Value); if (contourNode == null) { return(null); } entering.Remove(currentNode.Value); while (contourNode != null && !entering.Contains(contourNode.Value) && !exiting.Contains(contourNode.Value) ) { polygon.AddLast(contourNode.Value); contourNode = contour.NextOrFirst(contourNode); if (contourNode.Value == startNode) { return(null); } } entering.Remove(contourNode.Value); polygon.AddLast(contourNode.Value); return(contour2.NextOrFirst(contour2.Find(contourNode.Value))); }