Разработка информационной системы для деканата высшего учебного заведения

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



HIZU_H

#define CHIZU_H

#include

#include

#include

//Пользовательские модули

#include "merkator.h"

#include "doubletable.h"

#include "spline.h"

#include "lotexture.h"

#include "material.h"

#include "geometry.h"

#include "mathadv.h"

using namespace std;

//Константы максимума и минимума

#define MAX 9999999999

#define MIN -9999999999

//Цветовые константы

#define COLOR_RED 0

#define COLOR_GREEN 1

#define COLOR_BLUE 2

//Стандартизация исходныхReplaceComma(AnsiString);

//Получение строки из числаPointDouble(double);

//Получние строки с градусами и минутами из градусов с нецелой частьюDegToDegMin(double);

//Получение строки с градусами,

//минутами и секундами из градусов с нецелой частьюDegToCoord(double);

//Получение строки из градусов с нецелой частью, добавляет букву E или NDegToDegMinI(double, bool);

//Получние строки с градусами и минутами из градусов с нецелой частью,

//добавляет букву E или NDegToDegMinSecI(double, bool);

//Получение градусов с нецелой частью из градусов, минут и секунд

double DegMinSecToDouble(double, double, double);

//Установка заголовка окна, виртуальная функция, реализуемая

//в модуле, где расположено окноSetTitle(AnsiString msg);

//Функуция для тестированияDebag(AnsiString msg);

//Структура "трёхмерная точка"

struct point3D

{x,y,z; //координаты

bool ataru(point3D &); //проверка на совпадение с другой

};

//Структура "узел батиметрии", основанная на трёхмерной точке

struct vertex:point3D

{nx,ny,nz; //нормали b; //буфер для размытияe; //существует ли

};

//Попадает ли трёхмерная точка в треугольник

bool InTriangle(point3D &, point3D &, point3D &, point3D &);

//Существует ли такой треугольникCorrectTria(point3D &, point3D &, point3D &, double);

//Универсальная функция расчёта цвета по глубине

double countColor(double, double, double, unsigned __int8, bool, bool);

//Точка батиметрического трекаBathPoint

{D r,m; //Точка в географических и нормализованных к 1 координатахint t; //Сколько миллисекунд прошло с начала трекаtide; //Высота прилива в данной точке(); //Конструктор

};

//Изолинияisoline

{D a,b; //начало и конецzero; //не показывать(); //конструктор

void put(double &, double &, double &, //задать&, double &, double &, bool &);view(int &); //показать

};

//цифра-подписьfigure:public point3D

{exists; //показыватьlength; //размер

isoline *line; //к какой изолинии привязанаstr[8]; //что отображатьstrl; //длина строки

double angle; //угол разворотаactivate(double, double); //"прилепить" к изолинии

void view(int); //показать

};

//Структура треугольника для триангуляцииOneTri

{

//порядковые номера точек в качестве вершин

unsigned int a,b,c;

};

//основной класс батиметрииbath:public texture

{:

//поляf; //уровень для расчёта изолинийzero; //являетмя ли уровень текущей изолинии нулевымmaterial_color[4]; //массив цвета материала tri; //набор треугольников для триангуляции

//буферная изолиния для работы функции расчёта изолиний

isoline line;

//методыtriangulation();:

//поля *isolist; //список уровней изолинийd; //шаг сетки

double sclxy; //коэффициент нормализации долготы и широтыsclz; //коэффициент нормализации высотыcfx; //коэффициент нормализации долготыcfy; //коэффициент нормализации широты

//суммарное математическое отклонение данных от исходных в

//результате сглаживания и расчёта равномерной сеткиdev;tmpz; //нормализованная высота для расчёта цветаisoHaba; //частота изолинийisolineSize; //толщина изолинииD min; //минимум, нормализованный к 1D max; //максимум, нормализованный к 1D rmn; //минимум в географических координатахD rmx; //максимум в географических координатах

//число строк в текстуре для доступа к ячейке одномерной

//текстуры по двум координатамk;blurCount; //количество проходов размытияtexNum; //ID текстуры в среде OpenGLfighaba; //Расстояние между подписямиdiffBlur; //количество проходов размытия для сравнения батиметрийstep; //пропуск кратных узлов сетки для ускорения отображенияFilename; //имя файлаtex; //отображение текстуры средставми OpenGLvarIso; //переменный список изолинийlighting; //освещение включеноrt; //режим отображения без пропусковviewPoints; //отображать трекиnet; //отображать сеткуcounted; //сетка уже расчитанаisolines; //отображать изолинииviewRelief; //отображать рельефvisible; //отображать сеткуhideFar; //скрыть удалённые участки

//скрыть участки, выходящие за границу минимума и максимума

bool hideUpLimit;needRecount; //требуется перерасчёт

bool difference; //является разницей между двумя батиметриямиblackAndWhite; //отображать в чёрнобелых тонахslg; //является прочитанным slg-файломhasTide; //прилив вычтен

//методы

//Конструктор();

//Чтение точек из ASCII-файла

bool LoadPoints(AnsiString, bool, bool);

//Чтение трека из slg-файлаLoadSlg(DoubleTable &, AnsiString);

//Очистить батиметриюMakeEmpty(int);

//Расчёт прилива

void CountTide(cubic_spline &);

//Вычисление минимума и максимумаReCountMinMax();

//Вычисление только минимумаReCountMin();

//Расчёт батиметрической сеткиCountNet(int, point3D, point3D, double, double, double, double,, int, double, double, int, int, int, dinmas *, bool);

//размытиеblur(int);

//расчёт отклоненияdeviation();

//Расчёт цвета для выбранного узла сетки

inline __fastcall void CountColor(int &, int &);

//Перерасчёт цветаReCountColor();

//Вычисление нормалей

inline __fastcall void CountNorm(int &, int &);

//Конструктор (в виде вызываемой функции)DefConstr();

//Вывод одного узла сетки на экран

void OneVertex(int &, int &);

//Вывод всей батиметрииview();

//Вывот трековViewPoints();

//Линейная интерполяция

double cf(double &, double &, double &, bool);

//Создание одной изолинииmakeLine(int &, int &);

//Отображение цифр-подписейViewFigures(int);

//Расчёт