Я пытаюсь использовать quadtree (4-арное дерево) для хранения информации в данном BMP.
Я изо всех сил пытаюсь выяснить, как построить дерево, учитывая любой BMP.
В основном структура такова, что каждый лист представляет пиксель. Каждый узел имеет 4 указателя, каждый из которых указывает на один из четырех оставшихся квадрантов на изображении. Таким образом, каждый узел делит текущую картинку на 4 части. К тому времени, когда вы находитесь на листе, вы находитесь в одном конкретном пикселе.
Я не уверен, как построить дерево для отображения определенного изображения. Предполагая, что у изображения есть размеры, которые являются степенями двух, что я должен сделать. Я понимаю, что рекурсивная функция, вероятно, могла бы сделать это наиболее элегантно, но я изо всех сил пытаюсь выяснить, как отслеживать, где на изображении я собираюсь быть.
Это на C ++, и в настоящее время мой файл quadtree.h содержит корень Node *, где узел определяется как структура с пиксельным элементом и 4 указателями на другие узлы. Каждый внутренний узел (неконечный узел) должен содержать среднее значение всех 4 значений RGB, к которым он приводит.
Я пытаюсь создать алгоритм, но думаю, что мне может понадобиться включить в файл .h одну или две структуры. Есть ли лучший / более чистый способ решения этой проблемы?