Разработка информационной системы для деканата высшего учебного заведения
Порядок контроля и приемки программного обеспечения, требования к документации. Текст программы: модуль Program.cs, sprav predmets.cs. Сообщения, выдаваемые программисту. Капитальные вложения по внедрению системы. Расчет годовой экономии от эксплуатации.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 29.06.2012 |
Размер файла | 7,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
camera
Класс камеры. Содержит методы упрощённого управления камерой в проекции OpenGL. Является предком класса control3d.
cursor
Класс курсора. Сожержит методы получения координат курсора на экране, преобразования их в проекцию OpenGL и обратно. Является предком класса control3d
coltrol3d
Класс управления сценой, наследник классов камеры и курсора, управлять просмотром трёхмерного изображения с помощью мыши: вращать, перемещать, масштабировать.
AverageLevel
Класс, применяемый для расчёта сезонных изменений уровня моря.
CamItem
Элемент последовательности камер, входит в качестве поля в класс CameraSequence.
CameraSequence
Класс-массив камер, является наследником класса Camera, применяется для создания видеороликов.
dinmas
Одномерный простой динамический массив. Используется в качестве массива для большинства типов данных.
dinmas2d
Двумерный простой динамический массив. Используется в качестве массива для батиметрической карты и её текстуры.
smartcont
Одномерный динамический массив с двойной адресацией. Используется для хранения объектов, содержащих поля типа dinmas и dinmas2d, в частности для списка батиметрических треков и списка камер.
TgaHeader
Заголовок TGA-файла.
RGBApixel
Структура точки в формате TGA
texture
Класс, предназначенный для чтения и записи файлов в формате TGA. Применяется как в качестве контейнера текстуры батиметрической карты, так и для сохранения изображений и видео. Является предком класса bath.
DoubleTable
Класс, позволяющий читать ascii-файл, представляющий собой таблицу из чисел, разделённых табуляцией и создающий на выходе двумерный массив. Применяется для чтения исходных данных.
vertex
Структура "узел батиметрии", основанная на трёхмерной точке.
BathPoint
Точка батиметрического трека.
isoline
Класс одного отрезка изолинии.
figure
Класс цифры-подписи.
OneTri
Структура треугольника для триангуляции.
bath
Основной класс для расчёта батиметрии. Содержит все функции обработки и анализа данных.
glWindow
Класс API-окна, реализующего вывод OpenGL-графики.
lamp
Класс, упрощяющий работу с освещением в OpenGL.
RastrFont
Класс, упрощающий работу с выводом текста в среде OpenGL.
WorkArea
Класс, предназначенный для чтения параметров текущего экрана.
Таблица 4.8 - Структура point2d
Вид члена |
Описание |
Назначение |
|
поле |
double x |
Абсцисса |
|
поле |
double y |
Ордината |
|
метод |
point2d() |
Пустой конструктор |
|
метод |
point2d(double, double) |
Конструктор |
|
метод |
bool equal(point2d&) |
Проверка на равенство |
|
метод |
void mix(point2d&) |
Вычислить среднюю точку |
|
метод |
double angto(point2d&) |
Получить ориентацию точки |
|
Вид члена |
Описание |
Назначение |
|
поле |
double z |
Аппликата |
|
метод |
point3d() |
Пустой конструктор |
|
метод |
point3d(double, double, double) |
Конструктор |
|
метод |
bool equal(point3d&) |
Проверка на равенство |
|
метод |
void mix(point3d&) |
Вычислить среднюю точку |
|
метод |
bool ataru(point3d&) |
Попадает ли в точку с радиусом EPS |
|
метод |
double z |
Аппликата |
|
Вид члена |
Описание |
Назначение |
|
поле |
point3d pos |
Позиция |
|
метод |
point3d startpos |
Начальная позиция |
|
метод |
point3d ang |
Вектор угла поворота |
|
метод |
point3d startang |
Начальный вектор угла поворота |
|
метод |
camera() |
Пустой конструктор |
|
метод |
camera(float, float, float, float, float, float) |
Конструктор |
|
метод |
void view() |
Применить камеру |
|
Вид члена |
Описание |
Назначение |
|
поле |
float x |
Абсцисса в среде OpenGL |
|
поле |
float y |
Ордината в среде OpenGL |
|
поле |
float dx |
Текущая скорость по оси абсцисс в среде OpenGL |
|
поле |
float dy |
Текущая скорость по оси ординат в среде OpenGL |
|
поле |
float size |
Размер курсора |
|
поле |
float oldX |
Предыдущая абсцисса в среде OpenGL |
|
поле |
float oldY |
Предыдущая ордината в среде OpenGL |
|
поле |
int WinX |
Абсцисса в оконных координатах |
|
поле |
int WinY |
Ордината в оконных координатах |
|
поле |
int OldWinX |
Предыдущая абсцисса в среде OpenGL |
|
поле |
int OldWinY |
Предыдущая абсцисса в среде OpenGL |
|
поле |
bool RMB |
Нажата правая кнопка |
|
поле |
bool LMB |
Нажата левая кнопка |
|
поле |
bool MMB |
Нажата средняя кнопка |
|
метод |
cursor() |
Пустой конструктор |
|
метод |
void check(int &, int &, int, int) |
Получить координаты курсора |
|
метод |
void putold() |
Запомнить предыдущие значения |
|
метод |
void view() |
Отобразить курсор |
|
метод |
void PutState(bool, bool, bool) |
Установить состояние кнопок мыши |
|
метод |
void PutState(bool, bool, bool, bool) |
Установить состояние кнопок мыши с проверкой |
Таблица 4.9 - Структура класса coltrol3d, потомок классов camera и cursor
Вид члена |
Описание |
Назначение |
|
метод |
coltrol3d() |
Пустой конструктор |
|
метод |
coltrol3d(float, float, float, float, float, float) |
Конструктор |
|
метод |
void view(bool) |
Установить камеру на текущую позицию в соответствии с курсором |
|
метод |
void gets(int, int, int, int, bool) |
Получить координаты курсора |
|
метод |
wheel(bool, float) |
Получить сообщение прокрутки мыши, отдалив камеру |
|
метод |
coltrol3d middle(coltrol3d, double) |
Установить позицию камеры посередине между двумя позициями |
Таблица 4.10 - Структура класса AverageLevel
Вид члена |
Описание |
Назначение |
|
поле |
TDateTime date |
Текущая дата |
|
поле |
double ya |
Годовая амплитуда |
|
поле |
double yf |
Годовая частота |
|
поле |
double hya |
Полугодовая амплитуда |
|
поле |
double hyf |
Полугодовая частота |
|
поле |
double tya |
Третьгодовая амплитуда |
|
поле |
double tyf |
Третьгодовая частота |
|
поле |
unsigned short y |
Текущий год |
|
поле |
unsigned short m |
Текущий месяц |
|
поле |
unsigned short d |
Текущий день |
|
метод |
void put(AnsiString) |
Задать данные из файла |
|
метод |
double get(TDateTime) |
Получить уровень для выбранной даты |
Таблица 4.11 - Структура класса dinmas
Вид члена |
Описание |
Назначение |
|
поле |
type* data |
Указатель на массив данных |
|
поле |
long siz |
Размер массива |
|
метод |
dinmas() |
Пустой конструктор |
|
метод |
dinmas(long) |
Конструктор |
|
метод |
~dinmas() |
Десруктор |
|
метод |
bool make(long) |
Управляемый конструктор (выделить память) |
|
метод |
void clear() |
Управляемый декструктор (очистить память) |
|
метод |
type& operator[](long) |
Доступ к элементу массива |
|
метод |
int bytes() |
Вывести занимаемую память |
|
метод |
void insert(type &, int) |
Вставить элемент |
|
метод |
void erase(int) |
Вырезать элемент |
|
метод |
push(type &) |
Вставить элемент в конец |
|
метод |
pop() |
Удалить последний элемент |
|
метод |
type& top() |
Получить последний элемент |
|
метод |
bool SaveToFile(AnsiString) |
Сохранить содержимое в файл |
|
метод |
bool LoadFromFile(AnsiString) |
Загрузить содержимое из файла |
|
метод |
long& size() |
Получить размер массива |
|
метод |
operator=(dinmas<type> &) |
Скопировать массив |
Таблица 4.12 - Структура класса dinmas2d
Вид члена |
Описание |
Назначение |
|
поле |
type** data |
Указатель на массив данных |
|
поле |
long n |
Размер по первому измерению |
|
поле |
long m |
Размер по второму измерению |
|
поле |
bool exists |
Массив создан |
|
метод |
dinmas2d() |
Пустой конструктор |
|
метод |
dinmas2d(long, long) |
Конструктор |
|
метод |
~dinmas2d() |
Деструктор |
|
метод |
bool make(long, long) |
Управляемый конструктор (выделить память) |
|
метод |
void clear() |
Управляемый декструктор (очистить память) |
|
метод |
type* operator[](long) |
Доступ к элементу массива |
|
метод |
int bytes() |
Вывести занимаемую память |
|
метод |
operator=(dinmas2d<type> &) |
Скопировать массив |
Таблица 4.13 - Структура класса smartcont
Вид члена |
Описание |
Назначение |
|
поле |
type** graphs |
Указатель на массив данных |
|
поле |
int _size |
Размер массива |
|
поле |
int selected |
Индекс выбранного элемента |
|
метод |
smartcont(int) |
Конструктор |
|
метод |
smartcont() |
Пустой конструктор |
|
метод |
make(int n) |
Управляемый конструктор (выделить память) |
|
метод |
int &size() |
Получить размер массива |
|
метод |
void clear() |
Управляемый деструктор (очистить память) |
|
метод |
type& operator[](int) |
Получить элемент по индексу |
|
метод |
type& operator()() |
Получить выбранный элемент |
|
метод |
~smartcont() |
Деструктор |
|
метод |
insert(type &value) |
Вставить элемент по индексу |
|
метод |
insert() |
Вставить элемент в выбранное место |
|
метод |
void copy() |
Создать дубликат рядом с выбранным элементом |
|
метод |
void erase(int) |
Удалить элемент по индексу |
|
метод |
void erase() |
Удалить выбранный элемент |
|
метод |
bool select(int) |
Выбрать элемент |
|
метод |
int SelectedItem() |
Получить индекс выбранного элемента |
|
метод |
void MoveUp() |
Переместить элемент вверх |
|
метод |
void MoveDown() |
Переместить элемент вниз |
Таблица 4.14 - Структура класса CamItem
Вид члена |
Описание |
Назначение |
|
поле |
coltrol3d ctrl |
Позиция камеры |
|
поле |
int secs |
Занимает секунд |
|
метод |
CamItem(coltrol3d, int) |
Конструктор |
|
метод |
CamItem() |
Пустой конструктор |
Таблица 4.15 - Структура класса CameraSequence
Вид члена |
Описание |
Назначение |
|
поле |
coltrol3d ctrl |
Позиция камеры |
|
поле |
int secs |
Занимает секунд |
|
метод |
CamItem(coltrol3d, int) |
Конструктор |
|
метод |
CamItem() |
Пустой конструктор |
|
Вид члена |
Описание |
Назначение |
|
поле |
int selected |
Выбранный элемент |
|
поле |
int secs |
Всего секунд |
|
поле |
int shots |
Всего кадров |
|
метод |
dinmas<CamItem> ctrl |
Массив позиций камеры |
|
метод |
dinmas<double> x |
Дискретный массив отрезков времени |
|
метод |
dinmas<double> y[6] |
Дискретный массив позиций и углов поворота камеры |
|
метод |
cubic_spline spl[6] |
Непрервыный массив (кубический сплайн) позиций и углов поворота камеры |
|
метод |
CameraSequence() |
Пустой конструктор |
|
метод |
void insert(coltrol3d, int) |
Вставить новую камеру |
|
метод |
void update(coltrol3d, int) |
Заменить выбранную камеру |
|
метод |
void remove() |
Удалить выбранную камеру |
|
метод |
coltrol3d selectedCtrl() |
Получить выбранную камеру |
|
метод |
void countSpline() |
Расчитать кубическую интерполяцию |
Таблица 4.16 - Структура класса RGBpixel
Вид члена |
Описание |
Назначение |
|
поле |
GLubyte r |
Красный канал |
|
поле |
GLubyte g |
Зелёный канал |
|
поле |
GLubyte b |
Синий канал |
|
метод |
RGBpixel(GLubyte, GLubyte, GLubyte) |
Конструктор |
|
метод |
RGBpixel() |
Пустой конструктор |
|
метод |
void GetPixel(GLubyte &, GLubyte &, GLubyte &) |
Получить пиксель |
|
метод |
RGBpixel ToBGR() |
Преобразовать в формат для записи в TGA на 24 бита |
|
метод |
RGBApixel ToBGRA() |
Преобразовать в формат для записи в TGA на 32 бита |
|
Вид члена |
Описание |
Назначение |
|
поле |
GLubyte a |
Альфаканал |
|
метод |
RGBApixel(GLubyte, GLubyte, GLubyte, GLubyte) |
Конструктор |
|
метод |
RGBApixel() |
Пустой конструктор |
|
метод |
void GetPixel(GLubyte &, GLubyte &, GLubyte &, GLubyte &) |
Получить пиксель |
|
метод |
RGBApixel ToBGRA() |
Преобразовать в формат для записи в TGA на 32 бита |
Таблица 4.17 - Структура класса texture
Вид члена |
Описание |
Назначение |
|
поле |
bool exsist |
суествует |
|
поле |
bool binded |
уже применяется |
|
поле |
int width |
ширина |
|
поле |
int height |
высота |
|
поле |
int RealWidth |
ширина, приближённая к степени двойки |
|
поле |
int RealHeight |
высота, приближённая к степени двойки |
|
поле |
int PixelsQnt |
количество точек |
|
поле |
int ID |
идентификационный номер текстуры в OpelGL |
|
поле |
float hcoeff |
отношение height к RealHeight |
|
поле |
float wcoeff |
отношение width к RealWidth |
|
поле |
dinmas<RGBApixel> imageData |
массив точек |
|
метод |
GLubyte correct(float) |
исправление целочисленного цвета, если он выходит из диапазона 0-255 |
|
метод |
void operator=(texture &) |
копировать текстуру |
|
метод |
void SetPixel(int, int, GLubyte, GLubyte, GLubyte, GLubyte) |
задать одну точку целыми числами |
|
метод |
void SetPixelf(int, int, float, float, float, float) |
задать одну точку числами с плавающей точкой |
|
метод |
void GetPixel(int, int, GLubyte &, GLubyte &, GLubyte &, GLubyte &) |
получить одну точку |
|
метод |
texture() |
конструктор |
|
метод |
bool MakeArray(int, int) |
выделение памяти c проверкой на степень двойки |
|
метод |
bool MakeArraySimple(unsigned int, unsigned int) |
выделение памяти в обход проверки на степень двойки |
|
метод |
bool BindTexture(unsigned int, bool, bool) |
применение текстуры |
|
метод |
bool SaveToTGA(AnsiString) |
сохранение в TGA |
|
метод |
bool LoadFromTGA(AnsiString, unsigned int, bool, bool) |
чтение из TGA |
|
метод |
~texture() |
деструктор |
|
метод |
void DeleteArray() |
очистить массив |
|
метод |
void UnBind() |
отменить текстуру |
|
метод |
unsigned int GetWidth() |
Получить ширину |
|
метод |
unsigned int GetHeight() |
Получить высоту |
|
метод |
unsigned int GetRealWidth() |
Получить ширину, ближайшую к степени двойки |
|
метод |
unsigned int GetRealHeight() |
Получить высоту, ближайшую к степени двойки |
|
метод |
unsigned int GetPixelsQnt() |
Получить число пикселей |
|
метод |
unsigned int GetID() |
Получить ID текстуры |
|
метод |
bool GetExsist() |
Узнать, существует ли текстура |
|
метод |
bool GetBinded() |
Узнать, наложена ли текстура |
|
метод |
float GetWCoeff() |
Получить отношение height к RealHeight |
|
метод |
float GetHCoeff() |
Получить отношение width к RealWidth |
|
метод |
void PutWidth(unsigned int) |
Задать ширину |
|
метод |
void PutHeight(unsigned int) |
Получить высоту |
|
метод |
void PutRealWidth(unsigned int) |
Получить ширину, ближайшую к степени двойки |
|
метод |
void PutRealHeight(unsigned int) |
Получить высоту, ближайшую к степени двойки |
|
метод |
void PutPixelsQnt(unsigned int) |
Получить число пикселей |
|
метод |
void PutID(unsigned int) |
Получить ID текстуры |
|
метод |
void PutExsist(bool) |
Узнать, существует ли текстура |
|
метод |
void PutBinded(bool) |
Узнать, наложена ли текстура |
|
метод |
void PutWCoeff(float) |
Получить отношение height к RealHeight |
|
метод |
void PutHCoeff(float) |
Получить отношение width к RealWidth |
Таблица 4.18 - Структура класса DoubleTable
Вид члена |
Описание |
Назначение |
|
поле |
dinmas2d<double> d |
Выходной массив данных |
|
метод |
DoubleTable(AnsiString) |
Конструктор |
|
метод |
DoubleTable() |
Пустой конструктор |
|
метод |
bool Load(AnsiString, char) |
Прочитать файл, узнав разделитель |
|
метод |
double* operator[](unsigned int) |
Доступ к элементу |
Таблица 4.19 - Структура класса lamp
Вид члена |
Описание |
Назначение |
|
поле |
int light |
ID источника света в OpenGL |
|
поле |
GLUquadricObj* sun |
Указатель на объект-солнце |
|
поле |
GLfloat position[4] |
Позиция |
|
поле |
GLfloat ambient[4] |
Внешний свет |
|
поле |
GLfloat diffuse[4] |
Рассеянный светт |
|
поле |
GLfloat specular[4] |
Отражащий свет |
|
поле |
GLfloat attenuation |
Размер блика |
|
поле |
bool active |
Активен |
|
поле |
bool focused |
Выбран |
|
метод |
lamp() |
Пустой конструктор |
|
метод |
lamp(int, float, float, float) |
Конструктор |
|
метод |
make(int, float, float, float) |
Задать цвет на позиции |
|
метод |
make(int, float, float, float, float, float, float, float, float, float, float, float, float, bool, bool, float); |
Задать свет по всем параметрам |
|
метод |
void setlight(int) |
Установить свет |
|
метод |
void put(bool) |
Включить свет |
|
метод |
void view(bool,bool) |
Показать источник света |
|
метод |
color(float, float, float, int) |
Задать цвет |
|
метод |
pos(float, float, float) |
Задать позицию |
|
метод |
SetInfinity(bool) |
Установить, бесконечный ли свет |
|
метод |
SetAttenuation(float) |
Установить размер бликов |
|
метод |
void border() |
Показывать рамку на источнике |
|
метод |
SetActive(bool) |
Активировать |
Таблица 4.20 - Структура класса BathPoint
Вид члена |
Описание |
Назначение |
|
поле |
point3d r,m |
Точка в географических и нормализованных к 1 координатах |
|
поле |
unsigned int t |
Сколько миллисекунд прошло с начала трека |
|
поле |
double tide |
Высота прилива в данной точке |
|
метод |
BathPoint() |
Конструктор |
|
Вид члена |
Описание |
Назначение |
|
поле |
point3d a |
начало |
|
поле |
point3d b |
конец |
|
поле |
bool zero |
не показывать |
|
метод |
isoline() |
конструктор |
|
метод |
void put(double &, double &, double &, double &, double &, double &, bool &) |
задать |
|
метод |
void view(int &) |
показать |
Таблица 4.21 - Структура класса figure, потомок класса point3d
Вид члена |
Описание |
Назначение |
|
поле |
bool exists |
показывать |
|
поле |
double length |
размер |
|
поле |
isoline *line |
к какой изолинии привязана |
|
поле |
char str[8] |
что отображать |
|
поле |
int strl |
длина строки |
|
поле |
double angle |
угол разворота |
|
метод |
void activate(double, double) |
"прилепить" к изолинии |
|
метод |
void view(int) |
показать |
|
поле |
double f |
уровень для расчёта изолиний |
|
поле |
bool zero |
являетмя ли уровень текущей изолинии нулевым |
|
поле |
float material_color[4] |
массив цвета материала |
|
поле |
dinmas<OneTri> tri |
набор треугольников для триангуляции |
|
поле |
isoline line |
буферная изолиния для работы функции расчёта изолиний |
|
поле |
bool triangulation() |
произвести триангуляцию |
|
поле |
dinmas<BathPoint> q |
батиметрический трек |
|
поле |
dinmas2d<vertex> p |
батиметрическая сетка |
|
поле |
TDateTime startDate |
дата начала съёмки |
|
поле |
TDateTime endDate |
дата конца съёмки |
|
поле |
vector<isoline> iso |
вектор изолиний |
|
поле |
dinmas2d<figure> figures |
массив цифр |
|
поле |
dinmas<double> *isolist |
список уровней изолиний |
|
поле |
double d |
шаг сетки |
|
поле |
double sclxy |
коэффициент нормализации долготы и широты |
|
поле |
double sclz |
коэффициент нормализации высоты |
|
поле |
double cfx |
коэффициент нормализации долготы |
|
поле |
double cfy |
коэффициент нормализации широты |
|
поле |
double dev |
суммарное математическое отклонение данных от исходных в результате сглаживания и расчёта равномерной сетки |
|
поле |
double tmpz |
нормализованная высота для расчёта цвета |
|
поле |
double isoHaba |
частота изолиний |
|
поле |
double isolineSize |
толщина изолинии |
|
поле |
point3d min |
минимум, нормализованный к 1 |
|
поле |
point3d max |
максимум, нормализованный к 1 |
|
поле |
point3d rmn |
минимум в географических координатах |
|
поле |
point3d rmx |
максимум в географических координатах |
|
поле |
int k |
число строк в текстуре для доступа к ячейке одномерной текстуры по двум координатам |
|
поле |
int blurCount |
количество проходов размытия |
|
поле |
int texNum |
ID текстуры в среде OpenGL |
|
поле |
int fighaba |
Расстояние между подписями |
|
поле |
int diffBlur |
количество проходов размытия для сравнения батиметрий |
|
поле |
int step |
пропуск кратных узлов сетки для ускорения отображения |
|
поле |
AnsiString Filename |
имя файла |
|
поле |
bool tex |
отображение текстуры средставми OpenGL |
|
поле |
bool varIso |
переменный список изолиний |
|
поле |
bool lighting |
освещение включено |
|
поле |
bool rt |
режим отображения без пропусков |
|
поле |
bool viewPoints |
отображать треки |
|
поле |
bool net |
отображать сетку |
|
поле |
bool counted |
сетка уже расчитана |
|
поле |
bool isolines |
отображать изолинии |
|
поле |
bool viewRelief |
отображать рельеф |
|
поле |
bool visible |
отображать сетку |
|
поле |
bool hideFar |
скрыть удалённые участки |
|
поле |
bool hideUpLimit |
скрыть участки, выходящие за границу минимума и максимума |
|
поле |
bool needRecount |
требуется перерасчёт |
|
поле |
bool difference |
является разницей между двумя батиметриями |
|
поле |
bool blackAndWhite |
отображать в чёрнобелых тонах |
|
поле |
bool slg |
является прочитанным slg-файлом |
|
поле |
bool hasTide |
прилив вычтен |
|
метод |
bath() |
Конструктор |
|
метод |
bool LoadPoints(AnsiString, bool, bool) |
Чтение точек из ASCII-файла |
|
метод |
bool LoadSlg(DoubleTable &, AnsiString) |
Чтение трека из slg-файла |
|
метод |
bool MakeEmpty(int) |
Очистить батиметрию |
|
метод |
void CountTide(cubic_spline &) |
Расчёт прилива |
|
метод |
void ReCountMinMax() |
Вычисление минимума и максимума |
|
метод |
double ReCountMin() |
Вычисление только минимума |
|
метод |
bool CountNet(int, point3d, point3d, double, double, double, double, double, int, double, double, int, int, int, dinmas<double> *, bool) |
Расчёт батиметрической сетки |
|
метод |
void blur(int) |
размытие |
|
метод |
void deviation() |
расчёт отклонения |
|
метод |
inline __fastcall void CountColor(int &, int &) |
Расчёт цвета для выбранного узла сетки |
|
метод |
void ReCountColor() |
Перерасчёт цвета |
|
метод |
inline __fastcall void CountNorm(int &, int &) |
Вычисление нормалей |
|
метод |
void DefConstr() |
Конструктор (в виде вызываемой функции) |
|
метод |
void OneVertex(int &, int &) |
Вывод одного узла сетки на экран |
|
метод |
void view() |
Вывод всей батиметрии |
|
метод |
void ViewPoints() |
Вывот треков |
|
метод |
double cf(double &, double &, double &, bool) |
Линейная интерполяция |
|
метод |
void makeLine(int &, int &) |
Создание одной изолинии |
|
метод |
void ViewFigures(int) |
Отображение цифр-подписей |
|
метод |
void countOneIso(double) |
Расчёт одного слоя изолиний |
|
метод |
void countIso(double, dinmas<double> *, bool) |
Расчёт всех изолиний |
|
метод |
void CountFigures(int) |
Расчёт цифр-подписей |
|
метод |
void viewIso() |
Отображение изолиний |
|
метод |
void EraseNet() |
Удаление расчитанной батиметрической сетки |
|
метод |
bool GetDiffer(bath &, bath &, int, double, int) |
Вычисление разницы между двумя батиметриями |
|
метод |
bool GetDifferPoints(bath &, double) |
Вычисление |
|
метод |
bool ReBindTexture() |
Наложение текстуры |
|
метод |
bool SaveNet(AnsiString) |
Сохранение сетки в ASCII-формате |
|
метод |
bool SaveANI(AnsiString, double) |
Сохранение данных в формате.inf и.dat для программы ANI |
|
метод |
bool SavePointsGoogle(AnsiString) |
Сохранение набора точек для отображения в прорамме Google Chrome |
|
метод |
bool SaveTrack(AnsiString) |
Сохранение трека для отображения в прорамме Google Chrome |
|
метод |
bool SavePoints(AnsiString) |
Сохранение набора точек в ASCII-формате в географических коордиантах |
|
метод |
bool SavePointsMer(AnsiString) |
Сохранение набора точек в ASCII-формате в координатах меркатора |
|
метод |
bool SaveNetGoogle(AnsiString, int) |
Сохранение батиметрической карты для отображения в прорамме Google Chrome |
|
метод |
void setConstantPreset(bath &) |
Получение всех статических переменных батиметрии из другой |
|
метод |
operator=(bath &) |
Полное копирование батиметрии из другой |
Таблица 4.22 - Структура класса glWindow
Вид члена |
Описание |
Назначение |
|
метод |
LRESULT CALLBACK (*WindProc)(HWND,UINT,WPARAM,LPARAM) |
Функция обработки сообщений окна |
|
поле |
AnsiString title |
Заголовок окна |
|
поле |
HINSTANCE hInstance |
Содержит экземпляр приложения |
|
поле |
GLuint |
||
метод |
GLvoid KillGLWindow(GLvoid) |
Закрыть окно |
|
метод |
BOOL CreateGLWindow(char*, int, int, int, bool) |
Создать окно |
|
поле |
HDC hDC |
Приватный контекст устройства GDI |
|
поле |
HWND hWnd |
Содержит handle окна типа hWnd |
|
поле |
HGLRC hRC |
Текущий контекст воспроизведения |
|
поле |
HANDLE H |
Содержит handle окна типа HANDLE |
|
поле |
int winW |
Ширина окна |
|
поле |
int winH |
Высота окна |
|
поле |
int winL |
Смещение окна слева |
|
поле |
int winT |
Смещение окна сверху |
|
поле |
bool killed |
Закрыто ли окно |
|
метод |
glWindow() |
Пустой конструктор |
|
метод |
glWindow(int, int, AnsiString, LRESULT CALLBACK (*wp)(HWND,UINT,WPARAM,LPARAM)) |
Конструктор |
|
метод |
void make(int, int, AnsiString, LRESULT CALLBACK (*wp)(HWND,UINT,WPARAM,LPARAM)) |
Управляемый конструктор |
|
метод |
void __fastcall Execute() |
Запуск окна |
|
метод |
bool ConnectGlToWindow() |
Подключить к окну параметры OpenGL |
4.2 Характеристика и структура интерфейса проекта
Интерфейс приложения состоит из двух окон, не считая стандартных всплывающих диалоговых окон и окон сообщений. Окно настроек (по-умолчанию слева) содержит все средства управления программой, кроме настроек положения, угла поворота и масштаба камеры. Данное окно реализовано средствами VCL в среде C++ Builder при помощи стандартных компонентов VCL и (в большей степени) компонетов библиотеки Raize. Окно отображения выводит результаты работы на экран и представляет собой окно, реализованное средствами Windows API, связанной контекстом воспроизведения с OpenGL. Данное окно позволяет вращать и масштабировать сцену.
Модуль «soko_code.cpp» проекта приложения имеет принципиальное значение и реализует базисный функционал системы. В графическом интерфейсе системы данный модуль реализует главное окно настроек приложения.
4.2.1 Главное окно
Главная форма приложения MainForm принадлежит к типу TForm и содержит в себе остальные элементы интерфейса. При закрытии формы, если в программе были произведены изменения, возникнет диалоговое окно с вопросом, сохранить ли изменения в редактируемом файле. Главное окно содержит строку меню, панель инструментов и две сворачиваемые панели - панель сцены и панель батиметрии. Панель сцены состоит из двух частей: верхняя часть содержит элементы управления камерами, нижняя - группы настроек текущей сцены. Панель батиметрии также состоит из двух частей: верхняя часть содержит список батиметрических треков и панель управления ими, нижняя - группы настроек выбранного трека.
Таблица 4.23 - Состав основных компонентов главного окна
Название компоненты |
Тип компоненты |
Назначение |
|
TMainMenu |
MainMenu |
Главное меню. Содержит пункты управления открытием, сохранением, испортом и экспортом данных. |
|
TRzToolbar |
MainToolBar |
Главная панель инструментов. Повторяет функции главного меню. |
|
TRzSizePanel |
ViewPanel |
Содержит элементы управления всей сценой. |
|
TRzSizePanel |
BathsPanel |
Содержит элементы управления списком треков и выбранной батиметрией |
|
TRzListBox |
CameraList |
Список камер для рендеринга видео |
|
TRzToolbar |
CameraListEditToolBar |
Панель управления камерами, позволяет добавлять, удалять, заменять камеры |
|
TRzGroupbar |
CameraGroupBar |
Группа управления камерами |
|
TRzGroupbar |
SceneGroupBar |
Группа управления сценой |
|
TRzCheckList |
PointsList |
Список треков |
|
TRzToolbar |
TrackListEditToolBar |
Панель управления списком треков, позволяет импортировать и экспортировать данные, объединять и разделять треки. |
|
TRzGroupbar |
BathsGroupBar |
Группа управления выбранной батиметрией |
4.2.2 Главное меню
Главное меню содержит пункты управления файлами: окрытия, сохранения, импорта и экспорта. Также имеется возможность выйти из приложения, предварительно сохранив изменения с помощью всплывающего окна.
Таблица 4.24 - Состав компонентов главного меню
Название компоненты |
Тип компоненты |
Назначение |
|
MainMenu |
TMainMenu |
Основной объект главного меню |
|
MenuFile |
TMenuItem |
Пукт «файл», сохранение и открытие батиметрических сцен. |
|
MenuNew |
TMenuItem |
Создать новую сцену / сбросить все настройки |
|
MenuOpen |
TMenuItem |
Открыть сцену |
|
MenuSave |
TMenuItem |
Сохранить текущую сцену |
|
MenuSaveAs |
TMenuItem |
Сохранить новую сцену |
|
MenuSpacer |
TMenuItem |
Разделитель |
|
MenuExit |
TMenuItem |
Выйти из программы |
|
MenuData |
TMenuItem |
Пункт «дата», управление импортом и экспортом данных. |
|
MenuImport |
TMenuItem |
Импортировать данные |
|
MenuExport |
TMenuItem |
Экспортировать данные |
4.2.3 Группа «границы»
Данная группа является первой среди групп настроек текущей сцены (левая колонка). Данная группа предназначена для установки границ четырёхугольника, в котором будет производиться расчёт батиметрической сетки. Она содержит настройки переменных, общих для всех рассчитываемых батиметрий, и особенностью её работы является тот факт, что при расчёте хотя бы одной батиметрической сетки доступ к данной группе ограничивается. Это необходимо для того, чтобы вся совокупность батиметрических сеток существовала в единых координатах для удобства их совместной обработки.
Таблица 4.25 - Состав компонентов группы «границы» (выборочно)
Название компоненты |
Тип компоненты |
Назначение |
|
BordersGroup |
TRzGroup |
Объект данной группы |
|
Borders |
TRzPanel |
Панель, ограничивающая редактирование группы в случае наличия хотя бы одной расчитанной батиметрической сетки. |
|
GetFromPoints |
TRzBitBtn |
Кнопка, позволяющая автоматически получить границы из текущего набора батиметрических треков |
|
PlMinY |
TRzSpinEdit |
Минимальная широта |
|
PlMaxY |
TRzSpinEdit |
Максимальная широта |
|
PlMinX |
TRzSpinEdit |
Минимальная долгота |
|
PlMaxX |
TRzSpinEdit |
Максимальная долгота |
|
PlMinZ |
TRzSpinEdit |
Минимальная глубина |
|
PlMaxZ |
TRzSpinEdit |
Максимальная глубина |
|
PlSclZ |
TRzSpinEdit |
Масштабирование глубины |
|
PlaceBox |
TRzComboBox |
Список доступных районов для вычисления прилива и сезонных гармонических колебаний |
|
SeparationType |
TRzRadioGroup |
Группа, позволяющая выбрать тип задания сетки: с помощью деления выбранного прямоугольника на определённое число узлов сетки, либо задание шага вручную |
|
PlN |
TRzSpinEdit |
Число узлов сетки по максимальному измерению |
|
Step |
TRzSpinEdit |
Шаг |
|
StepType |
TRzComboBox |
Тип задания узлов сетки |
|
BorderLines |
TCheckBox |
Показывать границы |
|
Lines |
TRzCheckBox |
Показывать линейки |
|
Measurment |
TRzRadioGroup |
Отбражать градусную или километровую сетку |
С использованием группы «границы» могут быть выполнены следующие основные действия:
Автоматическое задание границ равномерной сетки
Корректировка границ на местности
Установка диапазона глубин
Корректировка масштабирования по высоте
Установка размера и шага батиметрической сетки
Установка названия участка местности для вычисления прилива
Управление внешним видом градусной или киломентровой сетки
4.2.4 Группа «рельеф»
Следующая группа на панели сцены отвечает за внешний вид батиметрической сетки. Она позволяет оптимизировать просмотр, опционально выбирая только необходимые элементы сетки.
Таблица 4.26 - Состав компонентов группы «рельеф» (выборочно)
Название компоненты |
Тип компоненты |
Назначение |
|
SurfceGroup |
TRzGroup |
Объект данной группы |
|
HideUpLimit |
TCheckBox |
Опция, позволяющая скрывать участки рельефа, не вошедшие в диапазон глубин |
|
Net |
TCheckBox |
Показывать рельеф в виде сетки |
|
PreviewSpin |
TRzSpinEdit |
Кратный пропуск узлов сетки, используется для ускорения просмотра |
|
Relief |
TCheckBox |
Опция, позволяющая отображать и скрывать рельеф |
|
ViewPoints |
TCheckBox |
Опция, позволяющая отображать и скрывать батиметрические треки |
4.2.5 Группа «свет и цвет»
Следующая группа на панели сцены отвечает за настройку освещения сцены. Имеется возможность включать и отключать объёмное освещение, изменять режим на чёрно-белый и цветной, изменять угол наклона источника света.
Таблица 4.27 - Состав компонентов группы «свет и цвет» (выборочно)
Название компоненты |
Тип компоненты |
Назначение |
|
ColorAndLightGroup |
TRzGroup |
Объект данной группы |
|
BackColor |
TRzColorEdit |
Объект редактирования цвета фона |
|
Lighting |
TCheckBox |
Включить или отключить динамическое освещение |
|
Hotspots |
TCheckBox |
Включить или отключить блики (режим с бликами требует повышенных ресурсов графической системы) |
|
BlackAndWhite |
TCheckBox |
Чёрно-белый или цветной режим |
|
LightUV |
TRzSpinEdit |
Угол поворота источника света |
|
LightW |
TRzSpinEdit |
Угол наклона источника света |
4.2.6 Группа «изолинии»
Следующая группа на панели сцены отвечает за настройку изолиний. Имеется возможность задать изолинии с регулярной частотой или на произвольных уровнях, регулировать толщину изолиний
Таблица 4.28 - Состав компонентов группы «изолинии» (выборочно)
Название компоненты |
Тип компоненты |
Назначение |
|
IsolinesGroup |
TRzGroup |
Объект данной группы |
|
VarIso |
TRzRadioGroup |
Опция, задающая режим постоянной или переменной частоты изолиний |
|
Isolines |
TCheckBox |
Отображать или скрывать изолинии |
|
IsolineSize |
TRzSpinEdit |
Толщина изолиний |
|
IsolineListOpen |
TRzToolbarButton |
Кнопка, позвляющая загрузить список уровней изолиний из файла при режиме переменной частоты |
|
IsoHaba |
TRzSpinEdit |
Частота изолиний при режиме постоянной частоты |
|
IsolineList |
TRzComboBox |
Список переменных уровней изолиний, получаемый после загрузки из файла |
4.2.7 Группа «цифры»
Следующая группа на панели сцены отвечает за настройку цифр-подписей. Имеется возможность задать размер и частоту подписей.
Таблица 4.29 - Состав компонентов группы «цифры» (выборочно)
Название компоненты |
Тип компоненты |
Назначение |
|
FiguresGroup |
TRzGroup |
Объект данной группы |
|
FiguresSize |
TRzSpinEdit |
Видимый размер цифр-подписей |
|
FiguresFreq |
TRzSpinEdit |
Частота расположения цифр-подписей на батиметрической сетке |
|
FiguresCheck |
TRzCheckBox |
Отображать или скрывать цифры-подписи |
4.2.8 Группа «общие настройки»
Следующая группа на панели сцены отвечает за общую настройку сцены. Имеется опция отключения привязки окна отображения к окну настроек, и управление размером цифр шкалы глубин.
Таблица 4.30 - Состав компонентов группы «общие настройки» (выборочно)
Название компоненты |
Тип компоненты |
Назначение |
|
MainOptionsGroup |
TRzGroup |
Объект данной группы |
|
PlaceWindow |
TRzCheckBox |
Опция, позволяющая выбрать, привязывать ли окно отображения к окну настроек |
|
ScaleFigureSize |
TRzSpinEdit |
Размер цифр шкалы глубин справа в пикселах |
4.2.9 Группа «правка трека»
Первая группа на панели батиметрий отвечает за исправление выбранного трека. Имеется возможность вручную просматривать каждую точку, изменять её глубину и географические координаты в абсолютных и относительных координатах. Выбранная точка будет выделяться на окне отображения. Также имеется возможность смещения всего трека в любом направлении.
Таблица 4.31 - Состав компонентов группы «правка трека» (выборочно)
Название компоненты |
Тип компоненты |
Назначение |
|
TrackEditGoup |
TRzGroup |
Объект данной группы |
|
PointInd |
TRzSpinEdit |
Номер выбранной точки |
|
ViewOnePoint |
TCheckBox |
Выделять на экране выбранную точку |
|
PointsCount |
TRzEdit |
Поле, отображающее общее число точек |
|
PointX |
TRzSpinEdit |
Поле для изменения текущей широты точки |
|
PointY |
TRzSpinEdit |
Поле для изменения текущей долготы точки |
|
PointDepth |
TRzSpinEdit |
Поле для изменения текущей глубины точки |
|
PointDepthFin |
TRzSpinEdit |
Поле для задания глубины с помощью градиента. При режиме абсолютных координат предыдущее поле выступает в качестве начального значения, а данное в качестве конечного. Смещение глубин рассчитывается с помощью линейной интерполяции |
|
Absolute |
TRzCheckBox |
Режим смещения в абсолютных или относительных координатах |
|
Replace |
TRzBitBtn |
Произвести смещение всего трека |
4.2.10 Группа «прилив»
Вторая группа на панели батиметрий отвечает за расчёт прилива. Прилив расчитывается по-умолчанию без задействования данной группы, путём выбора местности в группе «границы», однако данная группа позволяет просматривать и изменять дату начала и конца трека, отключать вычет прилива и производить его перерасчёт при изменении местности.
Таблица 4.32 - Состав компонентов группы «прилив» (выборочно)
Название компоненты |
Тип компоненты |
Назначение |
|
TideGroup |
TRzGroup |
Объект данной группы |
|
HasTide |
TRzCheckBox |
Опция, включающая режим вычитания прилива |
|
TideCount |
TRzBitBtn |
Произвести перерасчёт прилива |
|
StartDate |
TRzDateTimeEdit |
Управление датой начала съёмки |
|
StartTime |
TRzDateTimeEdit |
Управление временем начала съёмки |
|
EndDate |
TRzDateTimeEdit |
Управление датой конца съёмки |
|
EndTime |
TRzDateTimeEdit |
Управление временем конца съёмки |
4.2.11 Группа «расчёт»
Третья группа на панели батиметрий отвечает за расчёт батиметрической сетки. Имеется возможность установить максимальный радиус для смежных областей, что должно соответствовать частоте галсов во время батиметрической съёмки. Участки, расстояние между которыми превышает данный радиус, показаны не будут, так как полагается, что данных недостаточно. Также имеется возможность настроить число проходов размытия готовой сетки.
Таблица 4.33 - Состав компонентов группы «расчёт» (выборочно)
Название компоненты |
Тип компоненты |
Назначение |
|
CountGroup |
TRzGroup |
Объект данной группы |
|
CountBtn |
TRzBitBtn |
Кнопка расчёта батиметрической сетки |
|
DeleteNet |
TRzBitBtn |
Кнопка удаления сетки из объекта трека |
|
MaxRad |
TRzSpinEdit |
Максимальный радиус, при котором между смежными данными будет построена сетка |
|
MaskBlurCount |
TRzSpinEdit |
Число проходов размытия сетки |
4.2.12 Группа «разность»
Четвёртая группа на панели батиметрий отвечает за расчёт разностей между батиметрическими сетками. Позволяет выбрать вторую батиметрию для сравнения и построить карту разности. Также, для случая, когда исходные треки сравниваемых батиметрий сильно не совпадают, имеется возможность произвести усечение, оставив только точки, где данные пересекаются в заданном радиусе.
Таблица 4.34 - Состав компонентов группы «разность» (выборочно)
Название компоненты |
Тип компоненты |
Назначение |
|
DifferenceGroup |
TRzGroup |
Объект данной группы |
|
DiffList |
TRzComboBox |
Список батиметрий для сравнения |
|
DiffBtn |
TRzBitBtn |
Кнопка расчёта разности |
|
DiffRange |
TRzSpinEdit |
Поле задания радиуса обрезания участков, находящихся вне пересечений треков двух выбранных батиметрий |
|
Nokosu |
TRzBitBtn |
Кнопка, выполняющая обрезание вышеназванных участков |
|
DiffBlur |
TRzSpinEdit |
Число проходов размытия сетки |
4.2.13 Список треков
В верхней части панели батиметрий расположен список треков и панель управления треками. Расположенные на панели кнопки позволяют производить все основные операции с треками: импорт, экспорт, удаление, перемещение, копирование, переименование, объединение и разделение треков.
Таблица 4.35 - Состав компонентов списка треков и кнопки управления им
Название компоненты |
Тип компоненты |
Назначение |
|
PointsList |
TRzCheckList |
Список треков. Позволяет отметить опцией любой трек, что отображает либо скрывает его. |
|
TrackListEditToolBar |
TRzToolbar |
Список батиметрий для сравнения |
|
PointsOpen |
TRzToolbarButton |
Импорт треков |
|
PointsDelete |
TRzToolbarButton |
Удаление выбранного трека |
|
CopyButton |
TRzToolbarButton |
Копирование трека |
|
Export |
TRzToolbarButton |
Экспорт выбранного трека |
|
ConnectVisible |
TRzToolbarButton |
Объединить отмеченные треки в один |
|
Separate |
TRzToolbarButton |
Разделить треки на точке, отмеченной как «текущая» в группе «правка трека» |
|
RenameButton |
TRzToolbarButton |
Переименовать трек |
|
BathUp |
TRzToolbarButton |
Переместить трек вверх |
|
BathDown |
TRzToolbarButton |
Переместить трек вниз |
4.2.14 Камеры
В верхней части панели сцены расположен список камер и панель управления треками. Расположенные на панели кнопки позволяют производить все основные операции с камерами: добавление, обновление, удаление, перемещение, копирование, предваритеьный просмотр видеоролика. Находящаяся под панелью группа камер позволяет задавать свойства видеоряда: продолжительность нахождения на экране в милисекундах, частоту кадров, разрешение видео. Также имеется возможность выбирать между плавным и резким перемещением видео, а также между режимами перспективной и ортогональной проекиций.
Таблица 4.36 - Состав компонентов списка треков и кнопки управления им
Название компоненты |
Тип компоненты |
Назначение |
|
CameraList |
TRzListBox |
Список камер |
|
CameraAdd |
TRzToolbarButton |
Добавить камеру |
|
CameraDelete |
TRzToolbarButton |
Удалить выбранную камеру |
|
CameraUpdate |
TRzToolbarButton |
Обновить выбранную камеру на текущую |
|
CameraReload |
TRzToolbarButton |
Установить текущую камеру как выбранную |
|
CameraPlay |
TRzToolbarButton |
Предварительный просмотр видео |
|
ResetCamera |
TRzToolbarButton |
Обнулить текущую камеру |
|
ShotButton |
TRzToolbarButton |
Сохранить изображение |
|
SaveVideo |
TRzToolbarButton |
Сохранить видео |
|
CameraGroupBar |
TRzGroupBar |
Панель групп для камеры |
|
CameraGroup |
TRzGroup |
Группа камер |
|
Perspective |
TCheckBox |
Установить перспективную или ортогональную проекцию |
|
CameraSmooth |
TCheckBox |
Сглаживание движения камеры |
|
ShotWidth |
TRzSpinEdit |
Ширина экрана для сохранения |
|
ShotHeight |
TRzSpinEdit |
Высота экрана для сохранения |
|
CameraFrameRate |
TRzSpinEdit |
Частота кадров в секунду |
|
CameraSecs |
TRzSpinEdit |
Количество миллисекунд, за которые будет показана выбранная позиция камеры в видео |
|
CameraStat |
TRzStatusBar |
Панель для вывода сообщений о размере видео и общем количестве кадров |
4.2.15 Обращение к программе
Вызов и загрузка программы осуществляется запуском исполняемого файла Soko.exe. Исполняемый файл должен находится в одной папке с набором дополнительных консольных приложений и директорий, содержащих файловую базу данных к ней (в соответствии со схемой программы, приведённой в приложении 1 на рисунке 1.10).
Входные данные
Входными данными приложения являются:
1) батиметрические треки, получаемые посредством съёмки с помощью картплоттера-эхолота;
2) береговые треки, получаемые с помощью GPS-навигатора;
3) название региона и его координаты для определения уровня прилива и сезонных изменений уровня моря;
4) информация о размере обрабатываемого участка, качестве обработки, пределах глубины, позициях камеры, режимах отображения, количестве изолиний и прочие настройки состояния системы.
Выходные данные
Выходными приложения являются:
1) батиметрические карты и карты разницы для выбранных участков в чёрно-белом и цветом варианте;
2) изображения трёхмерных срезов батиметрических данных, показанные с определённого ракурса;
3) видео-файлы, представляющие собой съёмку трёхмерной батимет-рической карты с различных ракурсов;
4) батиметрические треки и сетки, готовые для отображения в про-грамме Google Earth;
5) батиметрические сетки в формате.inf для обработки в программном комплексе ANI.
4.3 Сообщения, выдаваемые программисту
В процессе работы приложения отслеживаются ошибки пользователя и ошибки, возникающие вследствие не зависящих от самого приложения причин (такие как отказы файловой структуры или файловой системы). В данных сатурациях на экран выводятся информационные сообщения об ошибках. Также программа выводит предупреждающее сообщения в случае закрытия приложения без сохранения изменений и предлагает произвести сохранение. Перечень выдаваемых сообщений приводится далее в списке.
"Сохранить изменения в файле <имя файла> перед закрытием?";
"Ошибка чтения файла";
"Ошибка чтения таблицы";
"Файл не может быть открыт";
"Файл не содержит корректных данных";
"Сетка не рассчитана";
"Ошибка записи";
"Ошибка чтения";
"Ошибка массива";
"Невозмоно создать контекст устройства OpenGL";
"Не найден подходящий формат пиксела";
"Невозможно установить формат пиксела";
"Невозможно создать контекст воспроизведения OpenGL";
"Контекст воспроизведения OpenGL не может быть активирован";
"Ошибка создания текстуры".
"Ошибка выделения памяти"
"Дата начала больше даты конца"
5. РУКОВОДСТВО ОПЕРАТОРА
5.1 Назначение
Система обеспечивает выполнение следующих основных функций:
Импорт батиметрическиз данных из исходных треков, получаемых с картплоттера-эхолота, береговых линий из GPS-навигатора а также загрузка сторонних искусственно созданных данных.
Совмещение, компоновка и редактирование данных, исправление ошибок.
Подготовка данных к отображению и обработке: вычитание высоты прилива и сезонных колебаний уровня моря.
Построение и импорт батиметрических карт.
Построение карт сравнения динамики рельефа.
Экспорт данных в различные форматы.
Процесс обработки батиметрических данных изображён на диаграммах объектно-ориентированной модели данной предметной области, выполненных в нотации языка UML.
5.2 Условия эксплуатации
Разрабатываемая система предназначена для использования на персональных IBM-совместимых компьютерах с центральным Intel-совместимом процессором с частотой работы не менее 1ГГц, оперативным запоминающим устройством объёмом не менее 512 Мб, свободным дисковым пространством не менее 25 Мб для хранения программного обеспечения и 500 Мб для хранения промежуточных данных. Обязательным условием является наличие манипулятора типа «мышь», SVGA-адаптера, совместимого с библиотекой OpenGL и монитора с разрешением не менее 1024х768.
5.3 Выполнение программы
Схема компонентов программы приведена на рисунке 1.10 в приложении 1. Для запуска программы необходимо наличие в каталоге указанных на данной схеме консольных приложений.
После запуска программы открывается два окна - окно настроек слева и окно отображения справа (см. приложение 1, рисунок 3.1).
Окно насроек предоставляет интерфейс ко всем функциональным возможностям программы, кроме управления текущей камерой, которое осуществляется в окне отображения. Окно разделено на несколько логических блоков. Любой элемент интерфейса окна настроек можно масштабировать и сворачивать. Имеется строка меню, панель инструментов и две сворачиваемые панели - панель сцены и панель батиметрии. Панель сцены состоит из двух частей: верхняя часть содержит элементы управления камерами, нижняя - группы настроек текущей сцены. Панель батиметрии также состоит из двух частей: верхняя часть содержит список батиметрических треков и панель управления ими, нижняя - группы настроек выбранного трека. Особенностью интерфейся приложения являются группы - сворачиваемые наборы настроек, объединённые общим назначением. Список доступных групп перечислен в таблице 99.
Таблица 5.1 - Группы интерфейса
Название |
Назначение |
Расположение |
|
Границы |
Постоянные настройки батиме трической сетки, границы, частота сетки, местность |
Левая панель |
|
Рельеф |
Внешний вид рельефа батиметрической карты |
Левая панель |
|
Свет и цвет |
Настройка освещения и цветов в программе |
Левая панель |
|
Изолинии |
Настройка изолиний: расположения, частоты, толщин |
Левая панель |
|
Цифры |
Настройка цифр-подписей на карте: размера, частоты |
Левая панель |
|
Общие настройки |
Общие настройки приложения |
Левая панель |
|
Правка трека |
Правка отдельных точек, смещение всего трека |
Правая панель |
|
Прилив |
Вычисление и исправление приливов |
Правая панель |
|
Расчёт |
Расчёт батиметрической сетки |
Правая панель |
|
Разность |
Вычисление разностей батиметрий |
Правая панель |
|
Камера |
Создание одиночных изображений и динамических |
Левая панель (сверху) |
После запуска программы следует нажать первую кнопку с изображением папки в самом верху панели «батиметрии». Это откроет диалоговое окно импорта исходных данных.
В списке возможных форматов находятся описанные ранее варианты загрузки данных. ASCII-координаты могут быть с глубиной, записанной отрицательными либо положительными числами, а координаты могут быть географическими или Меркатора. Также имеется возможность открывать треки необработанных исходных данных, или преобразованных в текст.
При запуске программы осуществляется аргументов командной строки: если в них содержится путь к доступному для открытия файлу, производится автоматическое чтение файла. Согласно концепции, принятой для системы, на одном компьютере может быть запущено сколько угодно экземпляров данного приложения.
После запуска программы следует выбрать локацию, чтобы приливы и сезонные колебания уровня расчитались автоматически при загрузке данных. Для этого следует в группе «границы» открыть список «район» и выбрать доступный район.
Если исходные данные не были загружены в момент запуска, следует импортировать батиметрические данные. Для этого можно выбрать пункт меню Файл>Импорт, либо нажать на изображение папки в правой панели под пустым списком треков - откроется диалоговое окно импорта исходных данных.
В списке возможных форматов находятся описанные ранее варианты загрузки данных. ASCII-координаты могут быть с глубиной, записанной отрицательными либо положительными числами, а координаты могут быть географическими или Меркатора. Также имеется возможность открывать треки необработанных исходных данных, или преобразованных в текст. Полный список форматов импорта показан в таблице 99.
Таблица 5.2 - Форматы импорта
Название формата |
Расширения |
|
ASCII координаты эхолота, глубина положительная |
*.txt;*.dat |
|
ASCII координаты эхолота, глубина отрицательная |
*.txt;*.dat |
|
ASCII координаты в градусах, глубина положительная |
*.txt;*.dat |
|
ASCII координаты в градусах, глубина отрицательная |
*.txt;*.dat |
|
Lowrance SLG |
*.slg |
|
Lowrance SLG преобразованный |
*.txt |
|
GPS eXchange |
*.gpx |
|
Трек пути из Google |
*.kml |
|
Промеры пляжа |
*.csv |
Предположим, импортируются исходные треки в формате slg. После их загрузки на экране появится изображение. Иногда приборы могут выдать ошибочные данные, что можно легко заметить по резкому перепаду высот. Чтобы устранить ошибки, в группе «правка трека» следует установить флажок «показать», тогда будет выделена выбранная точка (см. рисунок 12). Следует изменить высоту всех ошибочных точек, если таковые имеются.
Далее следует отметить флажком в списке, которые из треков следует включать в батиметрию, и нажать кнопку «объединить видимые» а панели под списком треков (обозначена пиктограммой прямоугольника). Оставшиеся ненужные треки следует удалить, выделив каждый в списке, и нажав кнопку с крестом, справа от кнопки импорта. При загрузке обработанных данных, этот этап пропускается.
В программе уже хранятся настройки по-умолчанию, обеспечивающие корректный расчёт равномерной сетки. При необходимости, воспользовавшись группой «границы», можно сделать дополнительные настройки: установить частоту будущей сетки, задать пользовательские границы с помощью полей ввода, изменить масштабирование по глубине (по-умолчанию 50 раз), изменить диапазон глубин. В группе «расчёт» имеется возможность установить пользовательское число проходов размытия перед расчётом. В группе «изолинии» имеется возможность установить пользовательскую частоту изолиний. В группе «цифры» - пользовательские настройки цифр-подписей.
После нажатия кнопки «расчёт» следует подождать некоторое время. Отключится часть группы «границы», а к видимым трекам добавится рассчитанная сетка.
При наличии нескольких рассчитанных батиметрий имеется позможность получить карту их разностей. Для возвращения в режим исходных данных следует выбрать каждую батиметрию с рассчитанной равномерной сеткой и нажать кнопку «удалить сетку». Только в этом случае станет доступным изменение границ.
Экспорт производится аналогично импорту нажатием кнопки экспорта, которая находится справа от кнопок импорта и удаления. Полный список форматов экспорта показан в таблице 99.
Таблица 5.3 - Форматы импорта
Название формата |
Расширения |
|
Матрица высот для MathCad |
*.grd |
|
Матрица высот для Google |
*.kml |
|
Набор точек в географических координатах с положительной глубиной |
*.txt |
|
Набор точек для Google |
*.kml |
|
Набор точек в координатах меркатора с отрицательной глубиной |
*.txt |
|
Трек пути для Google |
*.kml |
|
Матрица для ANI |
*.inf |
Следует обратить особое внимание на внешний вид сцены: при экспорте равномерной сетки в формат kml изображение будет соответствовать текущему изображению на экране, включая скрываемые области, наличие изолиний и остальные настройки.
Для сохранения и загрузки всего состояния системы, сдедует использовать пункты меню «открыть» и «сохранить как…». Данные сохраняются в формате.soko, разработанном специально для данного приложения.
Для сохранения результатов в графическом виде, следует воспользоваться группой «камеры». Установив требуемую ширину и высоту изображения следует нажать на кнопку «сохранить изображение».
Для создания видеоролика следует последовательно установить камеры - ракурсы, по которым будет перемещаться объектив. Для этого следует установить камеру в начальном положении, задать количество миллисекунд, которые камера будет находиться на этом месте, и нажать кнопку «добавить камеру» с изображением плюса. Далее следует изменить положение на новое и повторить операцию. В конце, задав частоту кадров, следует также указать разрешение видео и нажать на кнопку «сохранить видео». Рендеринг может занять продолжительное время. В конце будет предложено диалоговое окно с выбором кодека, кодирующего будущий видеофайл.
5.4 Сообщения, выдаваемые оператору
Программа информирует пользователя обо всех важных процессах с помощью изменения заголовка окна. При одидании действий от пользователя заголовок окна принимает вид «СОКО», остальные варианты заголовка перечислены ниже:
"СОКО - сохранение точек";
"СОКО - расчёт триангуляции";
"СОКО - чтение треугольников";
"СОКО - треугольники прочитаны";
"СОКО - временные файлы удалены";
"СОКО - Чтение ASCII";
"СОКО - Чтение slg";
"СОКО - триангуляция";
"СОКО - триангуляция завершена";
"СОКО - создана сетка";
"СОКО - не создана буферная сетка";
"СОКО - создана буферная сетка";
"СОКО - создана текстура";
"СОКО - обнуление сетки";
"СОКО - расчёт треугольников";
"СОКО - расчёт цвета и нормалей";
"СОКО - наложение текстуры";
"СОКО - размытие <номер трека>";
"СОКО - расчёт ошибки";
"СОКО - расчёт цвета";
6. ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ
6.1. Объект испытаний
6.1.1 Наименование системы
Наименование системы - Приложение «SOKO».
6.1.2 Назначение системы
Система обеспечивает выполнение следующих основных функций:
Ускорение, упрощение и автоматизация чтения и подготовки исходных данных из различных форматов.
Построение двумерных и трёхмерных батиметрических карт для анализа и обработки в научных лабораториях и для навигационных служб портов.
Быстрое построение батиметрической карты в процессе её съемки на основе имеющихся данных
Экспорт данных в различные графические, текстовые и двоичные форматы.
6.2 Цель испытаний
Целью данных испытаний являются проверка работоспособности программного обеспечения и соответствие программы и результатов её работы требованиям корректности, надежности и правильности, предъявленными в техническом задании.
6.3 Требования к программе
Разрабатываемая система должна быть предназначена для автоматизации обработки, визуализации и анализа батиметрических данных, к которым относятся процессы, связанные чтением и исправлением данных, построением триангуляционной сетки, настройкой параметров сцены, экспортом данных.
Разрабатываемая система должна быть представлена в виде единого приложения, входные данные для которого могут располагаться как на том же носителе, так и в локальной сети научного института. Разрабатываемая система должна отображать специфику предметной области и представлять собой единое целое.
Программное обеспечение должно надежно функционировать и не приводить к зависаниям или авариям работы операционной системы при любых ошибочных действиях пользователя.
6.4 Требования к программной документации
При испытании системы использовались следующие документы:
техническое задание;
руководство оператора;
руководство программиста.
6.5 Состав и порядок испытаний
6.5.1 Технические средства, используемые во время испытаний
Тестирование проводилось на рабочих станциях локальной компьютерной сети предприятия. Компьютеры, используемые для тестирования, соответствуют следующей спецификации: IBM PC совместимый персональный компьютер, оснащённый процессором с тактовой частотой не менее 2,7 ГГц, оперативной памятью не менее 8 Гб, графической подсистемой с памятью не менее 2 Гб, устройствами ввода (клавиатура и манипулятор мышь).
Подобные документы
Проектирование программного обеспечения для классифицирования выпускников высшего учебного заведения. Выбор системы управления базами данных и языка программирования. Разработка структуры данных, схема базы данных. Реализация программного комплекса.
дипломная работа [2,4 M], добавлен 27.03.2013Методика расчётов показателей ликвидности предприятия. Требования к программному продукту: описание решаемых задач, внутренней структуры системы (базы данных), рекомендации программисту и пользователю. Порядок контроля и приемки программного продукта.
курсовая работа [1010,9 K], добавлен 28.05.2013Разработка подсистемы формирования комплексной оценки в системе мониторинга наукометрических показателей работников высшего учебного заведения. Виды и методы шкалирования. Исследование существующих математических моделей построения комплексных оценок.
дипломная работа [3,3 M], добавлен 10.11.2012Характеристика объектов автоматизации информационных систем. Требования к документированию. Порядок контроля и приемки системы. Описание потоков данных и бизнес процессов. Структура информационной системы, состав функциональных и обеспечивающих подсистем.
курсовая работа [1,9 M], добавлен 18.09.2013Создание технического задания на разработку информационной системы для заказа билета на самолет. Требования к документированию. Порядок контроля и приемки системы. Разработка концепции, архитектуры построения и платформы реализации информационной системы.
курсовая работа [1,8 M], добавлен 13.05.2015Основание для разработки автоматизированной информационной системы "Будущий абитуриент". Технические требования к программному изделию. Порядок контроля и приемки продукта. Рассмотрение исходной базы данных. Описание интерфейса программного обеспечения.
дипломная работа [3,3 M], добавлен 08.02.2013Создание электронного учебника, написанного на языке гипертекстовой разметки HTML. Характеристика программного обеспечения ЭВМ, необходимого для создания и эксплуатации информационной системы. Алгоритм функционирования системы, отладка программы.
курсовая работа [1,0 M], добавлен 22.12.2012Требования к программному средству. Спецификация качества программного обеспечения. Требования к эргономике и технической эстетики. Стадии и этапы разработки, порядок контроля и приемки. Проектирование архитектуры приложения, руководство пользователя.
курсовая работа [381,6 K], добавлен 20.06.2012Разработка системы управления базой данных "Структура ВУЗа". Требования к программе: функциональным характеристикам, надежности, эксплуатации, составу и параметрам технических средств. Требования к программной документации. Порядок контроля и приемки.
курсовая работа [982,7 K], добавлен 08.06.2015Реализация информационной системы для ведения документации по аренде в СУБД Access 2000. Построение функциональной и информационной модели. Описание программного обеспечения, разработанного в архитектуре "клиент-сервер", анализ операционных характеристик.
курсовая работа [637,9 K], добавлен 30.08.2010