//http://graphics.zcu.cz/files/106_REP_2010_Soukal_Roman.pdf
        private Vertex GetEnclosedVertex(Point p)
        {
            int index = (new Random()).Next(0, triangles.Count - 1);

            Vertex tri   = triangles[index];
            bool   found = false;

            while (!found)
            {
                found = true;
                for (int i = 0; i < 3; i++)
                {
                    if (tri.AcrossEdge(i, p) < 0)
                    {
                        tri   = tri.neighbors[i];
                        found = false;
                        break;
                    }
                }
            }

            return(tri);
        }