Если я понимаю ваш вопрос.Вам нужен какой-то способ отображения между пространственными координатами и листьями на квадродереве.
Вот одно из возможных решений, на которое я смотрел:
Для простоты, давайте сначала сделаем 1D случай.И давайте предположим, что у нас есть 32 точки сетки в x.Каждая точка сетки тогда соответствует некоторому листу на квадродереве глубины пять.(глубина 0 = вся сетка, глубина 1 = 2 точки, глубина 2 = 4 точки ... глубина 5 = 32 точки).
Каждый лист может быть представлен индексами ветвей, ведущими к листу.На каждом уровне есть две ветви, которые мы можем обозначить A и B. Таким образом, конкретный лист может быть помечен BBAAB, что будет означать переход вниз по ветви B, затем ветви B, затем ветви A, затем ветви B и затемветвь B.
Итак, как вы сопоставляете, например, BBABB с точкой сетки x между 0..31?Просто преобразуйте его в двоичный файл, чтобы BBABB-> 11011 = 27. Таким образом, преобразование точки сетки в конечный узел - это просто вопрос перевода букв A и B в 0 и 1, а затем интерпретации результата как двоичного числа.
Для 2D-случая все немного сложнее.Теперь у нас есть четыре ветви от каждого узла, поэтому мы можем пометить каждый путь ветви, используя четырехбуквенный алфавит, например, начиная с корня и беря 3-ю ветвь и затем четвертую ветвь, а затем первую ветвь, а затем вторую ветвь и затемво второй ветви снова мы сгенерируем строку CDABB.
Теперь, чтобы преобразовать строку (например, 'CDABB') в пару значений сетки (x, y).
Предположим, что A - это левый нижний угол, B - правый нижний угол, C - левый верхний угол, а D - правый верхний угол.Тогда, символически, мы могли бы написать: Ax = 0, Ay = 0 / Bx = 1, By = 0 / Cx = 0, Cy = 1 / Dx = 1, Dy = 1.
На примере CDABBСначала мы рассмотрим его значения x (CDABB) .x = (01011), что дает нам точку сетки x.И аналогично для y.
Наконец, если вы хотите выяснить, например, узел непосредственно справа от CDABB, а затем просто преобразовать его в пару двоичных чисел в x и y, добавьте +1 к xзначение и преобразовать новую пару двоичных чисел обратно в строку.
Я уверен, что все это было обнаружено, но я еще не нашел эту информацию в Интернете.