1

クワッド ツリーを作成したいのですが、正しく動作しません。長方形を取得し、幅と高さが 1 より大きくなるまで分割します。しかし、正しく分割されません。手伝って頂けますか?ありがとう。これが私のコードです。

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)
    {
        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);
        }

        Switch = !Switch;
        CreateTree(Root.LeftChild, Root.LeftChild.Rectangle);
        CreateTree(Root.RightChild, Root.RightChild.Rectangle);
    }

}

4

0 に答える 0