Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Региональный поиск метод квадрантного дерева / src / QTreeDoc
.cpp// QTreeDoc.cpp : implementation of the CQTreeDoc class
//
#include "stdafx.h"
#include "QTree.h"
#include "QTreeDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//задание максимальных значений:
#define MAXM 10 //коэффициента заполняемости ячейки
#define MAXD 10 //и предельной глубины
//задание начальных значений:
#define _M 3 //коэффициента заполняемости ячейки
#define _D 10 //и предельной глубины
#define MAXSIZEGRID 2048 //максимальная размерность сетки
#define MAXNUMCELLS MAXSIZEGRID //максимальное количество ячеек в строке
#define SIZEGRID 1024 //начальное значение размерности сетки
#define NUMCELLS 32 //начальное значение количества ячеек в строке
/////////////////////////////////////////////////////////////////////////////
// CQTreeDoc
IMPLEMENT_DYNCREATE(CQTreeDoc, CDocument)
BEGIN_MESSAGE_MAP(CQTreeDoc, CDocument)
//{{AFX_MSG_MAP(CQTreeDoc)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CQTreeDoc construction/destruction
CQTreeDoc::CQTreeDoc()
{
}
CQTreeDoc::~CQTreeDoc()
{
}
BOOL CQTreeDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
//задание максимальных значений:
m_maxM=MAXM; //коэффициента заполняемости ячейки
m_maxD=MAXD; //предельной глубины
//задание начальных значений:
M=_M; //коэффициента заполняемости ячейки
D=_D; //предельной глубины
m_SizeGrid=SIZEGRID; //начальное значение размерности сетки
m_NumCells=NUMCELLS; //начальное значение количества ячеек в строке
m_maxSizeGrid=MAXSIZEGRID; //максимальная размерность сетки
m_maxNumCells=MAXNUMCELLS; //максимальное количество ячеек в строке
//создаем пустой список точек
List tmp;
listPoints=tmp;
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CQTreeDoc serialization
void CQTreeDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
//сохраняем данные в файле
ar<<M;
ar<<D;
ar<<m_SizeGrid;
ar<<m_NumCells;
int N=listPoints.Lenght();
ar<<N;
listPoints.First();
ELEMENT p;
for(int i=1;i<=N;i++)
{
p=*listPoints.Val();
ar<<p.x;
ar<<p.y;
listPoints.Next();
}
}
else
{
//читаем данные из файла
ar>>M;
ar>>D;
ar>>m_SizeGrid;
ar>>m_NumCells;
int N;
ar>>N;
ELEMENT p;
List tmpList;
for(int i=1;i<=N;i++)
{
ar>>p.x;
ar>>p.y;
tmpList.Append(ELEMENT(p));
}
listPoints=tmpList;
}
}
/////////////////////////////////////////////////////////////////////////////
// CQTreeDoc diagnostics
#ifdef _DEBUG
void CQTreeDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CQTreeDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CQTreeDoc commands
Соседние файлы в папке src