コード例 #1
0
        /// <summary>
        /// Computes the barycentric dual area around a given mesh vertex.
        /// </summary>
        /// <returns>The dual area.</returns>
        /// <param name="vertex">Vertex.</param>
        public static double BarycentricDualArea(HE_Vertex vertex)
        {
            double area = 0.0;

            foreach (HE_Face f in vertex.adjacentFaces())
            {
                area += Area(f);
            }
            return(area);
        }
コード例 #2
0
        /// <summary>
        /// Computes the equally weighted normal arround the specified vertex
        /// </summary>
        /// <returns>The normal vector at that vertex.</returns>
        /// <param name="vertex">Vertex.</param>
        public static Vector3d VertexNormalEquallyWeighted(HE_Vertex vertex)
        {
            Vector3d n = new Vector3d();

            foreach (HE_Face f in vertex.adjacentFaces())
            {
                n += FaceNormal(f);
            }

            return(n.Unit());
        }
コード例 #3
0
        /// <summary>
        /// Computes the area weighted normal arround the specified vertex
        /// </summary>
        /// <returns>The normal vector at that vertex.</returns>
        /// <param name="vertex">Vertex.</param>
        public static Vector3d VertexNormalAreaWeighted(HE_Vertex vertex)
        {
            Vector3d n = new Vector3d();

            foreach (HE_Face f in vertex.adjacentFaces())
            {
                Vector3d normal = FaceNormal(f);
                double   area   = Area(f);

                n += (normal * area);
            }
            return(n.Unit());
        }