/// <summary>
        /// Returns true if vertex lies on the edge of triangle mesh
        /// </summary>
        /// <param name="vertex"></param>
        /// <returns></returns>
        public static bool IsOnEdge(Vector3 vertex, SceneBrep scene)
        {
            bool onEdge = false;

            var        handle      = scene.GetVertex(vertex);
            List <int> trianglePtr = new List <int>();

            // get triangles
            for (int i = 0; i < scene.vertexPtr.Count; i++)
            {
                if (scene.vertexPtr[i] == handle)
                {
                    if (i % 3 == 0)
                    {
                        trianglePtr.Add(i / 3);
                    }
                    else if (i % 3 == 1)
                    {
                        trianglePtr.Add((i - 1) / 3);
                    }
                    else if (i % 3 == 2)
                    {
                        trianglePtr.Add((i - 2) / 3);
                    }
                }
            }

            // is triangle on edge?

            foreach (var ptr in trianglePtr)
            {
                // get handle of corners of triangle
                var c1 = Scene3D.SceneBrep.tCorner(ptr);
                var c2 = c1 + 1;
                var c3 = c1 + 2;



                if (scene.cOpposite(c1) == -1)
                {
                    onEdge = true;
                }
                else if (scene.cOpposite(c2) == -1)
                {
                    onEdge = true;
                }
                else if (scene.cOpposite(c3) == -1)
                {
                    onEdge = true;
                }
            }

            return(onEdge);
        }