我目前正在玩分区2D空间。我如何穿过一个有多个孩子的树?
这是我的树
private class TreeNode
{
public Rectangle region;
public TreeNode childQ1;
public TreeNode childQ2;
public TreeNode childQ3;
public TreeNode childQ4;
public TreeNode(Rectangle region)
{
this.region = region;
}
}
这是我如何partioning的树,我调试它,一切都看起来不错
public class RegionTree
{
private class TreeNode
{
public Rectangle region;
public TreeNode childQ1;
public TreeNode childQ2;
public TreeNode childQ3;
public TreeNode childQ4;
public TreeNode(Rectangle region)
{
this.region = region;
}
}
TreeNode root;
public RegionTree(int RegionWidth, int RegionHeight, byte depth)
{
root = new TreeNode(new Rectangle(0, 0, RegionWidth, RegionHeight));
GenerateNodes(root, depth);
}
private void GenerateNodes(TreeNode node, int depth)
{
for (int i = 0; i < depth; i++)
{
int halfWidth = node.region.Width/2;
int halfHeight = node.region.Height/2;
TreeNode childQ1 = new TreeNode(new Rectangle(node.region.X, node.region.Y, halfWidth, halfHeight));
node.childQ1 = childQ1;
TreeNode childQ2 = new TreeNode(new Rectangle(node.region.X + halfWidth, node.region.Y, halfWidth, halfHeight));
node.childQ2 = childQ2;
TreeNode childQ3 = new TreeNode(new Rectangle(node.region.X, node.region.Y + halfHeight, halfWidth, halfHeight));
node.childQ3 = childQ3;
TreeNode childQ4 = new TreeNode(new Rectangle(node.region.X + halfWidth, node.region.Y + halfHeight, halfWidth, halfHeight));
node.childQ4 = childQ4;
GenerateNodes(childQ1, i);
GenerateNodes(childQ2, i);
GenerateNodes(childQ3, i);
GenerateNodes(childQ4, i);
}
}
}
我想要走线槽全部节点和子节点和绘制矩形,但需要一些帮助。
非常感谢你,完美的作品! – SKSKSKS