Exemplo n.º 1
0
        /// <summary>
        /// computes sum of opening-angles in triangles around vid, minus 2pi.
        /// This is zero on flat areas.
        /// </summary>
        public static double DiscreteGaussCurvature(DMesh3 mesh, int vid)
        {
            double angle_sum = 0;

            foreach (int tid in mesh.VtxTrianglesItr(vid))
            {
                Index3i et  = mesh.GetTriangle(tid);
                int     idx = IndexUtil.find_tri_index(vid, ref et);
                angle_sum += mesh.GetTriInternalAngleR(tid, idx);
            }
            return(angle_sum - MathUtil.TwoPI);
        }