public void GetSortedVerticesID(out int[] naked, out int[] clothed, out int[] corners)
        {
            List <int> clothed_temp = new List <int>();
            List <int> naked_temp   = new List <int>();
            List <int> corners_temp = new List <int>();

            foreach (int vKey in iM.VerticesKeys)
            {
                ITopologicVertex v = iM.GetVertexWithKey(vKey);

                if (v.V2HF != 0)
                {
                    IElement e     = iM.GetElementWithKey(v.GetElementID());
                    Int64    sibhe = e.GetSiblingHalfFacet(v.GetHalfFacetID());
                    if (sibhe != 0)
                    {
                        clothed_temp.Add(vKey);
                    }
                    else
                    {
                        if (IsCornerVertex(v.Key))
                        {
                            corners_temp.Add(vKey);
                        }
                        else
                        {
                            naked_temp.Add(vKey);
                        }
                    }
                }
            }
            corners = corners_temp.ToArray();
            naked   = naked_temp.ToArray();
            clothed = clothed_temp.ToArray();
        }
        public bool IsNakedVertex(int vKey)
        {
            ITopologicVertex v = iM.GetVertexWithKey(vKey);

            if (v.V2HF != 0)
            {
                IElement e     = iM.GetElementWithKey(v.GetElementID());
                Int64    sibhe = e.GetSiblingHalfFacet(v.GetHalfFacetID());
                if (sibhe == 0)
                {
                    return(true);
                }
            }
            return(false);
        }
        public int[] GetNakedVerticesID()
        {
            List <int> naked = new List <int>();

            foreach (int vKey in iM.VerticesKeys)
            {
                ITopologicVertex v = iM.GetVertexWithKey(vKey);
                if (v.V2HF != 0)
                {
                    IElement e     = iM.GetElementWithKey(v.GetElementID());
                    Int64    sibhe = e.GetSiblingHalfFacet(v.GetHalfFacetID());
                    if (sibhe == 0)
                    {
                        naked.Add(vKey);
                    }
                }
            }
            return(naked.ToArray());
        }
        private void BuildVertexToHalfFacet(int vKey, int elementID, int halfFacetID)
        {
            ITopologicVertex v = GetVertexWithKey(vKey);

            if (v.V2HF == 0)
            {
                v.SetV2HF(elementID, halfFacetID);
                SetVertex(vKey, v);
            }

            if (_elements[elementID].GetSiblingHalfFacet(halfFacetID) == 0)
            {
                if (v.GetElementID() != elementID || v.GetHalfFacetID() != halfFacetID)
                {
                    v.SetV2HF(elementID, halfFacetID);
                    SetVertex(vKey, v);
                }
            }
        }