I Want To Create Quadtree

Programming
Tutor: None Selected Time limit: 3 Days

I create Quad tree code . I want to get 10 point from database and put them in Quad tree's leaves but it doesn't work correctly.for example random point is (449.6745,411.1505) and range detected is 88 < x < 89 and 411 < y < 412 but it isn't correct . range should be 449 < x < 450 and 411 < y < 412 . Thanks Here is my code:
public class QuadTree
{
    public TreeNode MainRoot;             
    bool Switch = false;                         
 
    public QuadTree(Rectangle R)          
    {
        MainRoot = new TreeNode();
        MainRoot.Rectangle = R;
        MainRoot.LeftChild = null;
        MainRoot.RightChild = null;
    }
 
    public void CreateTree(TreeNode Root, Rectangle R, bool Switch)
    {
        if (Root.Rectangle.Width <=1 && Root.Rectangle.Height <=1 )
        {
            return;
        }
        Root.LeftChild = new TreeNode();
        Root.RightChild = new TreeNode();
        if (!Switch)
        {
            Root.LeftChild.Rectangle = new Rectangle(R.X, R.Y, R.Width / 2, R.Height);
            Root.RightChild.Rectangle = new Rectangle(R.X + R.Width / 2, R.Y, R.Width / 2, R.Height);
        }
 
        if (Switch)
        {
            Root.LeftChild.Rectangle = new Rectangle(R.X, R.Y, R.Width, R.Height / 2);
            Root.RightChild.Rectangle = new Rectangle(R.X, R.Y - R.Height / 2, R.Width, R.Height / 2);
        }
 
        CreateTree(Root.LeftChild, Root.LeftChild.Rectangle, !Switch);
        CreateTree(Root.RightChild, Root.RightChild.Rectangle, !Switch);
    }
 

    //*****************************************************************************************

 
    double x, y;
    public void SearchPoint(TreeNode Root)
    {
        bool sw = false;
 
        SqlConnection scon = new SqlConnection("Data Source=GATEWAY-PC;Initial Catalog=QuadTree;Integrated Security=True");
        scon.Open();
        SqlCommand scom = new SqlCommand("delete from PointArea", scon);
        scom.ExecuteNonQuery();
 
        for (int i = 1; i <= 10; i++)
        {
            TreeNode Current = new TreeNode();
            TreeNode T = new TreeNode();
            T = Root;
            Current = Root;
            SqlDataReader s = new SqlCommand("select X,Y from Coordinate where ID='" + i + "'", scon).ExecuteReader();
            while (s.Read())
            {
                x = Convert.ToDouble(s["X"]);
                y = Convert.ToDouble(s["Y"]);
            }
            s.Close();
 
            while (Current != null /*&& (Current.Rectangle.Width > 1 || Root.Rectangle.Height > 1)*/)
            {
                if (!sw)
                {
                    if (x >= Current.Rectangle.X && x <= (Current.Rectangle.X + Current.Rectangle.Width / 2))
                    {
                        T = Current;
                        Current = Current.LeftChild;
 
                    }
                    else if (x >= (Current.Rectangle.X + Current.Rectangle.Width / 2) && x <= Current.Rectangle.X + Current.Rectangle.Width)
                    {
                        T = Current;
                        Current = Current.RightChild;
                    }
                }
                if (sw)
                {
 
                    if (y <= Current.Rectangle.Y && y >= (Current.Rectangle.Y - Current.Rectangle.Height / 2))
                    {
                        T = Current;
                        Current = Current.LeftChild;
                    }
                    else if (y <= (Current.Rectangle.Y - Current.Rectangle.Height / 2) && y >= Current.Rectangle.Y - Current.Rectangle.Height)
                    {
                        T = Current;
                        Current = Current.RightChild;
                    }
                }
                sw = !sw;
            }
            SqlCommand sq = new SqlCommand("insert into PointArea values('" + i + "','" + T.Rectangle.X + "','" + (T.Rectangle.X + T.Rectangle.Width) + "','" + (T.Rectangle.Y - T.Rectangle.Height) + "' ,'" + T.Rectangle.Y + "')", scon);
            sq.ExecuteNonQuery();
            T.PointX = x;
            T.PointY = y;
        }
        scon.Close();
 
    }

Nov 30th, -0001

Thank you for the opportunity to help you with your question!

In most cases, the discipline is self-governed by the entities which require the programming, and sometimes very strict environments are defined

Please let me know if you need any clarification. I'm always happy to answer your questions.
Jun 14th, 2015

Studypool's Notebank makes it easy to buy and sell old notes, study guides, reviews, etc.
Click to visit
The Notebank
...
Nov 30th, -0001
...
Nov 30th, -0001
Feb 20th, 2017
check_circle
Mark as Final Answer
check_circle
Unmark as Final Answer
check_circle
Final Answer

Secure Information

Content will be erased after question is completed.

check_circle
Final Answer