/// <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); }
/// <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()); }
/// <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()); }