private TMANode upper_right_recursivo(TMANode A, TMNode D) { if (D is TMANode) { TMANode D_ = (TMANode)D; TMPoint a = A.Trap.RightP; TMPoint l = D_.Trap.LeftP; TMPoint bl = D_.Trap.Top_Left; TMPoint bla = A.Trap.Top_Right; // el trapecio lower_right vecino de A es el que tenga como leftp, el // mismo punto de rightp de A, pero además sea su top_left. if (a.Equals(l) && bl.Equals(bla)) { return(D_); } else { return(null); } } else { TMANode T = upper_right_recursivo(A, D.Node_Left); if (T == null) { T = upper_right_recursivo(A, D.Node_Rigth); } return(T); } }
public override TMNode buscar(TMPoint p, TMSegment s) { if (p.alaDerechaDe(this.point) || p.Equals(point)) { return(this.node_rigth.buscar(p, s)); } else { return(this.node_left.buscar(p, s)); } }
private static TMANode lower_right_recursivo(TMANode A, TMNode D) { if (D is TMANode) { var D_ = (TMANode)D; TMPoint a = A.Trap.RightP; TMPoint l = D_.Trap.LeftP; TMPoint bl = D_.Trap.Bottom_Left; TMPoint bla = A.Trap.Bottom_Right; // el trapecio lower_right vecino de A es el que tenga como leftp, el // mismo punto de rightp de A, pero además sea su top_left. if (a.Equals(l) && bl.Equals(bla)) { return(D_); } return(null); } TMANode T = lower_right_recursivo(A, D.Node_Left) ?? lower_right_recursivo(A, D.Node_Rigth); return(T); }