private HEdge _NewEdge() { var ret = new HEdge(); ret.ID = _edges.Count; _edges.Add(ret); return(ret); }
public void Dispose() { _id = HEMesh.InvaildID; _vertexTo = null; _relativeFace = null; _relativeEdge = null; _nextEdge = null; _preEdge = null; _oppEdge = null; }
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; }
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); } }
private void _DeleteEdge(HEdge edge) { _DeleteElement(edge, _edges); }