Esempio n. 1
0
        private HEdge _NewEdge()
        {
            var ret = new HEdge();

            ret.ID = _edges.Count;
            _edges.Add(ret);
            return(ret);
        }
Esempio n. 2
0
 public void Dispose()
 {
     _id           = HEMesh.InvaildID;
     _vertexTo     = null;
     _relativeFace = null;
     _relativeEdge = null;
     _nextEdge     = null;
     _preEdge      = null;
     _oppEdge      = null;
 }
Esempio n. 3
0
 internal HEEdge(int id, HEVertex goingTo, HEFace relativeFace, HEdge relativeEdge, HEEdge nextEdge, HEEdge preEdge, HEEdge oppEdge)
 {
     _id           = id;
     _vertexTo     = goingTo;
     _relativeFace = relativeFace;
     _relativeEdge = relativeEdge;
     _nextEdge     = nextEdge;
     _preEdge      = preEdge;
     _oppEdge      = oppEdge;
 }
Esempio n. 4
0
        internal void DeleteEdge(HEdge edge)
        {
            if (edge == null || edge.IsDeleted)
            {
                return;
            }

            var h1 = edge.Relative;
            var h2 = h1.OppEdge;

            if (edge.IsIsolated)
            {
                var v_from_h1 = h1.VertexFrom;
                var v_from_h2 = h2.VertexFrom;
                var h1_next   = h1.RotateNext;
                var h2_next   = h2.RotateNext;
                if (v_from_h1.OuterGoing == h1)
                {
                    v_from_h1.OuterGoing = h1_next == h1 ? null : h1_next;
                }
                if (v_from_h2.OuterGoing == h2)
                {
                    v_from_h2.OuterGoing = h2_next == h2 ? null : h2_next;
                }

                var h1_to = h1.PreEdge;
                var h2_to = h2.PreEdge;

                h1_to.NextEdge  = h1_next;
                h1_next.PreEdge = h1_to;
                h2_to.NextEdge  = h2_next;
                h2_next.PreEdge = h2_to;

                _DeleteHEdge(h1);
                _DeleteHEdge(h2);
                _DeleteEdge(edge);
            }
            else
            {
                DeleteFace(h1.RelativeFace);
                DeleteFace(h2.RelativeFace);
            }
        }
Esempio n. 5
0
 private void _DeleteEdge(HEdge edge)
 {
     _DeleteElement(edge, _edges);
 }