Example #1
0
        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);
        }
Example #2
0
        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)));
        }