我想创建一个四叉树,但它不能正常工作。我得到一个矩形,然后将其分割直到宽度和高度大于 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);
}
}