internal HEdge(int id, HEVertex v1, HEVertex v2, HEEdge relative) { _id = id; _v1 = v1; _v2 = v2; _relative = relative; }
public void Dispose() { _id = HEMesh.InvaildID; _v1 = null; _v2 = null; _relative = null; }
public HEdge GetEdgeBetween(HEVertex v1, HEVertex v2) { if (IsConnected(v1, v2)) { return(v1.OuterGoing.RelativeEdge); } return(null); }
private HEVertex _NewVertex() { var ret = new HEVertex(); ret.ID = VertexCount; _vertices.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; }
/// <summary> /// ret is point to v2 /// </summary> internal HEEdge HEdgeBetween(HEVertex v1, HEVertex v2) { var edge = EdgeBetween(v1, v2); if (edge != null) { return(edge.Relative.VertexTo == v2 ? edge.Relative : edge.Relative.OppEdge); } return(null); }
public HEEdge HalfEdgeFromVertex(HEVertex vertex) { var edge = _relative; while (true) { if (edge.VertexFrom == vertex) { return(edge); } edge = edge.NextEdge; if (edge == _relative) { break; } } return(null); }
public bool Contains(HEVertex vertex) { var edge = _relative; while (true) { if (edge.VertexTo == vertex) { return(true); } edge = edge.NextEdge; if (edge == _relative) { break; } } return(false); }
public void DeleteVertex(HEVertex vertex) { if (vertex == null || vertex.IsDeleted) { return; } if (!vertex.IsIsolated) { var edges = vertex.GetAdjacentEdges(); foreach (var edge in edges) { DeleteEdge(edge); } } _DeleteVertex(vertex); }
public HEdge EdgeBetween(HEVertex v1, HEVertex v2) { if (v1 == null || v2 == null) { return(null); } if (!v1.IsIsolated) { var edge = v1.OuterGoing; do { if (edge.VertexTo == v2) { return(edge.RelativeEdge); } edge = edge.RotateNext; }while (edge != v1.OuterGoing); } return(null); }
internal HEdge AddEdge(HEVertex v1, HEVertex v2) { if (v1 == null || v2 == null) { return(null); } var edge = EdgeBetween(v1, v2); if (edge != null) { return(edge); } edge = _NewEdge(); var hedge1 = _NewHEdge(); var hedge2 = _NewHEdge(); edge.V1 = v1; edge.V2 = v2; edge.Relative = hedge1; hedge1.VertexTo = v2; hedge1.OppEdge = hedge2; hedge1.RelativeEdge = edge; hedge1.PreEdge = hedge2; hedge1.NextEdge = hedge2; hedge2.VertexTo = v1; hedge2.OppEdge = hedge1; hedge2.RelativeEdge = edge; hedge2.PreEdge = hedge1; hedge2.NextEdge = hedge1; return(edge); }
private void _DeleteVertex(HEVertex vertex) { _DeleteElement(vertex, _vertices); }
public bool IsConnected(HEVertex v1, HEVertex v2) { return(EdgeBetween(v1, v2) != null); }
public Vector3D GetVertexNormal(HEVertex vertex) { return(GetVertexNormal(vertex.ID)); }