Exemple #1
0
 public IEnumerator <Facet> GetEnumerator()
 {
     foreach (var body in BodyArray)
     {
         MeshPtOffsetArray recentFace = null;
         foreach (var facet in body.Faces.SelectMany(f => new MeshPtOffsetArray(f.Mesh, PtOffsetArray).ToFacets()))
         {
             IsNewFace  = facet.Meshed != recentFace;
             recentFace = facet.Meshed;
             yield return(facet);
         }
     }
 }
Exemple #2
0
        /// <summary>
        /// Creates an enumerable of facets having only a single instance of a single facet sliding over
        /// the mesh vertices. It means, that you cannot rely on object identity (always the same facet with different index).
        /// </summary>
        /// <param name="mesh">The mesh</param>
        /// <returns>An enumerable facet</returns>
        public static IEnumerable <Facet> TransientFacetsOf(MeshPtOffsetArray mesh)
        {
            var maxIndex = mesh.Mesh.FacetCount();

            if (maxIndex > 0)
            {
                Facet f = new Facet(mesh, 0);
                yield return(f);

                for (int i = 0; i < maxIndex; i++)
                {
                    f.Index = i;
                    yield return(f);
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Creates an enumerable of facets referring to a single mesh and point array.
        /// </summary>
        /// <param name="mesh"></param>
        /// <param name="offsetArray"></param>
        /// <returns></returns>
        public static IEnumerable <Facet> ToFacets(this Mesh mesh, PtOffsetArray offsetArray)
        {
            var offsetMesh = new MeshPtOffsetArray(mesh, offsetArray);

            return(Enumerable.Range(0, mesh.FacetCount()).Select(index => new Facet(offsetMesh, index)));
        }
Exemple #4
0
 public Facet(MeshPtOffsetArray mesh, int index)
 {
     Meshed = mesh;
     Index  = index;
 }