将表示地图的文本文件解析为四叉树结构

时间:2011-12-13 18:25:08

标签: c raycasting

我必须在学校创建一个伪狼人3D作为一个分配,我需要一个结构来代表地图。由于所有计算都将基于二维网格,我认为四叉树将是我所需要的。

如何解析包含此文件的文件,例如:

1 1 1 1 1 1 1 1

1 0 0 0 0 0 0 1

1 0 0 1 0 0 0 1

1 0 0 1 0 0 0 1

1 0 0 1 0 0 0 1

1 1 1 1 1 1 1 1

其中1是墙块,0是空块,是否为四叉树结构?

2 个答案:

答案 0 :(得分:0)

你有几个选择。一种方法是将整个文件读入内存成某种数组,然后从那里自上而下构建四叉树。这可能是最简单的方法,只要地图不是非常大。

另一种选择是从底部的每个单独节点自下而上构建树,然后一旦解析了足够的节点以从您所读取的内容中形成父节点,就这样做。在此示例中,您将为每个读取的值形成叶节点。然后在偶数行的偶数列上,在形成叶节点后,从那里形成第二级节点。

你会得到这种结构:

1 1 1 1 1 1 1 1
1 2 1 2 1 2 1 2
1 1 1 1 1 1 1 1
1 2 1 3 1 2 1 3
1 1 1 1 1 1 1 1
1 2 1 2 1 2 1 2
1 1 1 1 1 1 1 1
1 2 1 3 1 2 1 4

每个数字代表一旦读取该位置的数字就形成的最高节点级别。同时形成每个下面的所有级别(即在级别3上,也形成一个二级节点和一个叶子(级别1)节点)。

答案 1 :(得分:0)

你可以用自上而下的方式构建树:将整个数组(假设它的尺寸为8x8)与零和1混合,对它进行分区,e。 G。在4x4瓷砖。现在检查每个磁贴是否只包含1或0或两者。当tile包含两者时,再次对其进行分区(2x2)并重新检查。重复,直到你处于“像素”级别(1x1)。您可以将其存储在包含指向四个相邻切片的指针的结构中。

维基百科上的

This图片显示它非常好。