Пример #1
0
 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);
     }
 }
Пример #2
0
 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));
     }
 }
Пример #3
0
        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);
        }