protected void CheckFace(IHalfEdge edge) { var e = edge.Next; var ecount = 0; while (e != edge) { if (e.Face != NoneHalfEdgeObject.None) { edge.Face = e.Face; return; } e = e.Next; ecount++; if (ecount > 100000) { LogTool.Log("Error loop for edge " + edge, LogLevel.Error); return; } } if (ecount >= 3) { var newFace = (this.Factory as IHalfEdgeFactory).CreateFace(); newFace.HalfEdge = edge; edge.Face = newFace; var ret = this.faces.Add(newFace); LogTool.AssertIsTrue(ret); e = newFace.HalfEdge.Next; var str = " "; while (e != edge) { str += " " + e.ToString(); e = e.Next; } LogTool.Log("Add face " + str); } }
public void Connect(IHalfEdge next, IFace face) { Next = next; Face = face; }