Beispiel #1
0
        // prienik bunky n s obdlznikom
        private Boolean intersects(KDNode n, Point from, Point to) 
        {
            // prienik je nie je vtedy, ak je cela bunka nad, pod, vlavo alebo vpravo voci obd.
            Point nodeF = n.getFrom();
            Point nodeT = n.getTo();

            //Console.WriteLine("ma, ci nema prienik?");
            //cely hore
            if(nodeT.Y < from.Y) {

                return false;
            }

            //cely dole
            if (nodeF.Y > to.Y)
            {
                return false;
            }

            //cely vlavo
            if (nodeF.X > to.X)
            {
                return false;
            }

            //cely vpravo
            if (nodeT.X < from.X)
            {
                return false;
            }
            // Console.WriteLine("ma prienik");
            return true;
        }
Beispiel #2
0
        // zistuje, ci je bunka target vo vnutri bunky n
        private Boolean isIn(KDNode target, KDNode n)
        {
            if ((target.getFrom().X >= n.getFrom().X) && (target.getTo().X <= n.getTo().X) &&
                (target.getFrom().Y >= n.getFrom().Y) && (target.getTo().Y <= n.getTo().Y))
            {
                return true;
            }

            return false;
        }
Beispiel #3
0
        // zistuje, ci dve bunky spolu susedia
        private Boolean isNeighbor(KDNode t, KDNode n) 
        {
            Point tf = t.getFrom();
            Point tt = t.getTo();
            Point nf = n.getFrom();
            Point nt = n.getTo();

            // t je tesne pod n
            if(nt.Y == tf.Y)
            {
                if ((nf.X < tt.X) && (nt.X > tf.X))
                {
                    return true;
                }
            }

            // t je tesne nad n
            if (nf.Y == tt.Y)
            {
                if ((tf.X < nt.X) && (tt.X > nf.X))
                {
                    return true;
                }

            }

            // t je tesne vlavo od n
            if (nt.X == tf.X)
            {
                if ((tf.Y < nt.Y) && (tt.Y > nf.Y))
                {
                    return true;
                }
            }

            // t je tesne vpravo od n
            if (tt.X == nf.X)
            {
                if ((nf.Y < tt.Y) && (nt.Y > tf.Y))
                {
                    return true;
                }
            }
            // Console.WriteLine("nie je to sused");
            return false;
        }
Beispiel #4
0
 // najde najmensiu vzdialenost medzi target a bunkou further.
 public Point nearestTo(KDNode further, KDNode target)
 {
     Point from = further.getFrom();
     Point to = further.getTo();
     Point tar = target.getPoint();
     Point result = new Point();
     result.X = (tar.X <= from.X) ?  from.X: 
         ((tar.X >= to.X) ? to.X : tar.X);
     result.Y = (tar.Y <= from.Y) ? from.Y :
         ((tar.Y >= to.Y) ? to.Y : tar.Y);
     return result;
 }