Beispiel #1
0
        void resolve_vtx_pairs()
        {
            //HashSet<int> targetVerts = new HashSet<int>(cutTargetOp.CutVertices);
            //HashSet<int> toolVerts = new HashSet<int>(cutToolOp.CutVertices);

            // tracking on-cut vertices is not working yet...
            Util.gDevAssert(Target.IsClosed() && Tool.IsClosed());

            HashSet <int> targetVerts = new HashSet <int>(MeshIterators.BoundaryVertices(cutTargetMesh));
            HashSet <int> toolVerts   = new HashSet <int>(MeshIterators.BoundaryVertices(cutToolMesh));

            split_missing(cutTargetOp, cutToolOp, cutTargetMesh, cutToolMesh, targetVerts, toolVerts);
            split_missing(cutToolOp, cutTargetOp, cutToolMesh, cutTargetMesh, toolVerts, targetVerts);
        }
        /// <summary>
        /// Disconnect all bowtie vertices in mesh. Iterates because sometimes
        /// disconnecting a bowtie creates new bowties (how??)
        /// </summary>
        public void DisconnectAllBowties(int nMaxIters = 10)
        {
            List <int> bowties = new List <int>(MeshIterators.BowtieVertices(Mesh));
            int        iter    = 0;

            while (bowties.Count > 0 && iter++ < nMaxIters)
            {
                foreach (int vid in bowties)
                {
                    DisconnectBowtie(vid);
                }
                bowties = new List <int>(MeshIterators.BowtieVertices(Mesh));
            }
        }