Я создаю четырехугольное дерево для своего трехмерного ландшафта, так как мне нужно беспокоиться только об осях Z и X, и у меня возникают проблемы с тем, как на самом деле перемещаться вниз после создания дерева.
Я создал дерево, и они хранятся в моем объекте QuadTree как объекты QuadNode. Каждый QuadNode представляет собой Quad дерева квадрантов. Он берет ландшафт и выясняет, нужно ли его подразделять на новые узлы, пока не найдет узлы самого нижнего уровня и не будет достаточного количества вершин на узел.
Я сохранил буфер вершин/индексов в каждом объекте узла, но они заполняются только после достижения самых нижних узлов. Таким образом, буферы, которые я пытаюсь получить (чтобы заставить буферы рисовать), находятся прямо в нижней части дерева.
Теперь я могу сделать это довольно просто с базовым деревом, которое имеет всего 4 узла от корня, но по мере того, как дерево становится больше, я запутался. Вот изображение для демонстрации
я храню
- How many levels are in the quad tree (to perhaps help with searching, like traverse to level 6)
- The total node count
Буферы хранятся в самых нижних узлах. Есть ли у кого-нибудь пример функции или псевдокода, как я могу создать функцию для обхода дерева с учетом определенного уровня, и она даст мне узлы для этого уровня? Или есть лучший подход?
4^n + 4^(n-1) + 4^(n-2)
и так далее доn == 0
. Итак, на уровне 2 у вас будет4^2 + 4^1 + 4^0 = 21
. На уровне 3 у вас будет21 + 4^3 = 85
. На уровне 4 у вас будет85 + 4^4 = 341
и так далее. - person   schedule 18.01.2018