示例#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(MeshVertex vertex)
        {
            var area = 0.0;

            foreach (var f in vertex.AdjacentFaces())
            {
                area += Area(f);
            }
            return(area);
        }
示例#2
0
        /// <summary>
        ///     Computes the equally weighted normal around the specified vertex.
        /// </summary>
        /// <returns>The normal vector at that vertex.</returns>
        /// <param name="vertex">Vertex.</param>
        public static Vector3d VertexNormalEquallyWeighted(MeshVertex vertex)
        {
            var n = new Vector3d();

            foreach (var f in vertex.AdjacentFaces())
            {
                n += FaceNormal(f);
            }

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

            foreach (var f in vertex.AdjacentFaces())
            {
                var normal = FaceNormal(f);
                var area   = Area(f);

                n += normal * area;
            }

            return(n.Unit());
        }