/// <summary>
        /// For given vertex handler return points that are incident to it
        /// Sets boundary as true if given vertex lies on the edge of the mesh
        /// </summary>
        public static List <int> GetPolygonVerticesAndDelete(int vertexIndex, ref bool boundary, SceneBrep scene)
        {
            List <int> polygon = new List <int>();

            List <int> trianglePointers = new List <int>();

            int add1 = 0;
            int add2 = 0;

            for (int i = 0; i < scene.vertexPtr.Count; i++)
            {
                // found triangle such that one corner is selected vertex
                if (scene.vertexPtr[i] == vertexIndex)
                {
                    // if it's main triangle handle
                    if (i % 3 == 0)
                    {
                        // get the remaining triangle corners
                        add1 = i + 1;
                        add2 = i + 2;

                        // get triangle handle
                        trianglePointers.Add(i);
                    }
                    else if (i % 3 == 1)
                    {
                        add1 = i - 1;
                        add2 = i + 1;
                        trianglePointers.Add(i - 1);
                    }
                    else if (i % 3 == 2)
                    {
                        add2 = i - 1;
                        add1 = i - 2;

                        trianglePointers.Add(i - 2);
                    }

                    if (!polygon.Contains(scene.vertexPtr[add1]))
                    {
                        polygon.Add(scene.vertexPtr[add1]);
                    }
                    if (!polygon.Contains(scene.vertexPtr[add2]))
                    {
                        polygon.Add(scene.vertexPtr[add2]);
                    }
                }
            }

            // CCW order of points in polygon

            ReorderPoints(ref polygon, trianglePointers, vertexIndex, scene.vertexPtr, ref boundary);
            trianglePointers.ForEach(x => scene.FreeTriangleSpace(x));

            return(polygon);
        }