Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Региональный поиск метод квадрантного дерева / src / MainStructures
.h#ifndef MNSTR
#define MNSTR
#include "CommonStructures.h"
class QTree;
///////////////////////////////////////////////////////////
//Класс, определяющий сетку m*m
///////////////////////////////////////////////////////////
class Grid {
private:
int m; //размерность сетки
int m_cellSize; //размер ячейки
List ***m_pGrid; //матрица ячеек сетки
public:
//конструкторы
Grid(void);
Grid(int domainSize,List s,int n,int _m);
//деструктор
~Grid(void);
//создание сетки (инициализация новыми параметрами)
void Create(int domainSize,List s,int n,int _m);
//запрос по области
List *RangeQuery(Rect &range);
friend class QTree;
};
///////////////////////////////////////////////////////////
//Класс, определяющий узел квадрантного дерева
///////////////////////////////////////////////////////////
class QTreeNode {
private:
QTreeNode *child[4]; //дочерние поддеревья
List *pts; //указатель на список точек, покрываемых
//данным квадрантом
int m_size; //размер данного квадранта
//запрос по области
List *RangeQuery(Rect &range,Rect &quadrant,int &level,
const int Index,Rect &curRange,ELEMENT &curPoint);
//вычисление квадранта, накрываемого данным узлом
Rect Quadrant(Rect &s,int i);
//является ли текущий узел внешним
int isExternal();
//отображение квадранта, накрываемого данным узлом
void Draw(Rect&,CDC*);
public:
//конструкторы
QTreeNode(List*);
QTreeNode(void);
//деструктор
~QTreeNode(void);
friend class QTree;
};
///////////////////////////////////////////////////////////
//Класс, определяющий квадрантное дерево
///////////////////////////////////////////////////////////
class QTree {
private:
QTreeNode *m_root; //корень дерева
Rect m_domain; //область поиска
//осуществляет построение дерева
QTreeNode *BuildQTree(Grid &G,int M,int D,int level,int,int,int,int,List &steps);
public:
//конструкторы
QTree(void);
QTree(Grid &G,int M,int D,List &steps);
//деструктор
~QTree();
//создание новой структуры дерева
void Create(Grid &G,int M,int D,List &steps);
//запрос по области
List *RangeQuery(Rect &range,int &level,const int Index,
Rect &curRange,ELEMENT &curPoint);
//отображение сетки построенного дерева
void DrawQTree(CDC*);
};
#endif
Соседние файлы в папке src