void RemoveEdge(AxisEdge edge) { var containerNode = GetAxisEdgesContainerNode(edge.Source.Point); containerNode.Item.RemoveAxis(edge); if (containerNode.Item.IsEmpty()) { edgeContainersTree.DeleteNodeInternal(containerNode); } }
CdtSite LeftCase(CdtSite pi, RBNode <CdtFrontElement> hittedFrontElementNode, out CdtSite rightSite) { //left case // if(db)ShowFrontWithSite(pi, new LineSegment(pi.Point, hittedFrontElementNode.Item.Edge.upperSite.Point), new LineSegment(pi.Point, hittedFrontElementNode.Item.Edge.lowerSite.Point)); Debug.Assert(ApproximateComparer.Close(pi.Point.X, hittedFrontElementNode.Item.X)); var hittedFrontElement = hittedFrontElementNode.Item; InsertAndLegalizeTriangle(pi, hittedFrontElement); var prevToHitted = front.Previous(hittedFrontElementNode); var leftSite = prevToHitted.Item.LeftSite; rightSite = hittedFrontElementNode.Item.RightSite; // if(db)ShowFrontWithSite(pi, new LineSegment(pi.Point, leftSite.Point), new LineSegment(pi.Point, prevToHitted.Item.RightSite.Point)); InsertAndLegalizeTriangle(pi, prevToHitted.Item); front.DeleteNodeInternal(prevToHitted); var d = front.Remove(hittedFrontElement); Debug.Assert(d != null); return(leftSite); }
internal bool RemoveExact(BasicReflectionEvent initialSite) { RBNode <BasicReflectionEvent> node = eventTree.Find(initialSite); if (null != node) { if (node.Item.Site == initialSite.Site) { eventTree.DeleteNodeInternal(node); return(true); } } return(false); }