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

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

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



одного слоя изолиний

void countOneIso(double);

//Расчёт всех изолинийcountIso(double, dinmas *, bool);

//Расчёт цифр-подписейCountFigures(int);

//Отображение изолинийviewIso();

//Удаление расчитанной батиметрической сеткиEraseNet();

//Вычисление разницы между двумя батиметриями

bool GetDiffer(bath &, bath &, int, double, int);

//ВычислениеGetDifferPoints(bath &, double);

//Наложение текстуры

bool ReBindTexture();

//Сохранение сетки в ASCII-форматеSaveNet(AnsiString);

//Сохранение данных в формате.inf и.dat для программы ANISaveANI(AnsiString, double);

//Сохранение набора точек для отображения в прорамме Google ChromeSavePointsGoogle(AnsiString);

//Сохранение трека для отображения в прорамме Google ChromeSaveTrack(AnsiString);

//Сохранение набора точек в ASCII-формате в географических коордиантахSavePoints(AnsiString);

//Сохранение набора точек в ASCII-формате в координатах меркатораSavePointsMer(AnsiString);

//Сохранение батиметрической карты для отображения в прорамме Google ChromeSaveNetGoogle(AnsiString, int);

//Получение всех статических переменных батиметрии из другойsetConstantPreset(bath &);

//Полное копирование батиметрии из другой=(bath &);

};

//Точка данных нивелированияLevelPoint

{l; //расстояние от берегаh; //высота над уровнем моря

//Координаты начальной точкиx;y;z;

};

//Класс для работы с нивелированием

struct Levelling

{ levelPoint; //массив точек местности

};

#endif

3.4.2 Реализация chizu.cpp

#ifndef CHIZU_CPP

#define CHIZU_CPP

#include "chizu.h"namespace std;

//Константы малентких чисел

#define SM 0.00000001

#define SM2 0.1

//Смещение изолинии вверх

#define UE 0.001

//Коэффициенты для раскрашивания шкалы

#define RC 4.3

#define GC 1.8

#define BC 1.2

#define RD 0.0

#define GD 0.0

#define BD 0.0

//Эпсилон отклонения

#define EPS 0.0001ReplaceComma(AnsiString str)

{(int i=1;i<=str.Length();i++)

{(str[i]==,)[i]=.;

}str;

}PointDouble(double x)

{AnsiString(x);

}DegToDegMin(double x)

{deg=floor(x);min=(x-deg)*60;AnsiString(deg)+" "+PointDouble(min)+"";

}DegToCoord(double x)

{deg=floor(x);min=floor(fabs(x-deg)*60);sec=floor(fabs((fabs(x-deg)*60)-min)*60);ms=floor(100*((fabs(fabs(fabs(x-deg)*60)-min)*60)-sec));(ms==99)

{=0;++;(sec==59 || sec==60)

{=0;++;(min==59 || min==60)

{=0;++;

}

}

}(min==0 && sec==0 && ms==0)

{AnsiString(deg)+":";

}(min!=0 && sec==0 && ms==0)

{AnsiString(deg)+":"+AnsiString(min)+"";

}(min!=0 && sec!=0 && ms==0)

{AnsiString(deg)+":"+(min)+""+AnsiString(sec)+"\"";

}AnsiString(deg)+":"+AnsiString(min)+

""+AnsiString(sec)+"\""+AnsiString(ms);

}DegToDegMinI(double x, bool E)

{deg=floor(x);min=round((x-deg)*60);AnsiString(deg)+" "+AnsiString(min)+" "+((E)?"E":"N");

}DegToDegMinSecI(double x, bool E)

{deg=floor(x);min=floor((x-deg)*60);sec=floor((((x-deg)*60)-min)*60);secs=AnsiString(sec)+"\" ";AnsiString(deg)+" "+AnsiString(min)+

" "+((sec!=0)?(secs):AnsiString(""))+((E)?"E":"N");

}DegMinSecToDouble(double deg, double min, double sec)

{deg+(min/60.)+(sec/3600.);

}point3D::ataru(point3D &p)

{(fabs(p.x-x)<EPS) && (fabs(p.y-y)<EPS) && (fabs(p.z-z)<EPS);

}InTriangle(point3D &a, point3D &b, point3D &c, point3D &p)

{pl1, pl2, pl3;= (a.x - p.x)*(b.y - a.y)-(b.x - a.x)*(a.y - p.y);= (b.x - p.x)*(c.y - b.y)-(c.x - b.x)*(b.y - p.y);= (c.x - p.x)*(a.y - c.y)-(a.x - c.x)*(c.y - p.y);((pl1 >= 0 && pl2 >= 0 && pl3 >= 0) ||

(pl1 <= 0 && pl2 <= 0 && pl3 <= 0))

{true;

}false;

}CorrectTria(point3D &a, point3D &b, point3D &c, double max)

{(sqrt(sqr(a.x-b.x)+sqr(a.y-b.y))>max)

{0;

}

{(sqrt(sqr(a.x-c.x)+sqr(a.y-c.y))>max)

{0;

}

{(sqrt(sqr(b.x-c.x)+sqr(b.y-c.y))>max)

{0;

}

{1;

}

}

}

}countColor(double z, double A, double B,__int8 color, bool difference, bool blackAndWhite)

{(!difference)

{(!blackAndWhite)(B<=A) return 0;(color)

{COLOR_RED:(z<0)exp(-sqr((z)*(4.3/(-A))));exp(-sqr((z+B*(-1))*(2/(((1.6)*(B))))));;COLOR_GREEN:(z<0)exp(-sqr((z)*(1.8/(-A))));exp(-sqr((z+B*(-0.42))*(2/(((0.85)*(B))))));;COLOR_BLUE:(z<0)exp(-sqr((z)*(1.2/(-A))));exp(-sqr((z+B*(1.2))*(2/(((1.9)*(B))))));;

}

}

{ret=1-(z-A)/(B-A);(ret1) return 1;ret;

}

}

{(!blackAndWhite)

{(color)

{COLOR_RED:exp(-pow((z-A-(B-A)*2)*(2./(((3.3)*(B-A)))),10));;COLOR_GREEN:exp(-pow((z-A-(B-A)*0)*(2./(((5)*(B-A)))),4));;COLOR_BLUE:exp(-pow((z-A-(B-A)*(-2))*(2./(((3.5)*(B-A)))),8));;

}

}

{ret=z/((B-A)/8)+B;(ret1) return 1;ret;

}

}

}::BathPoint()

{=0;=0;

}::isoline(){};isoline::put(double &x1, double &y1, double &z1,&x2, double &y2, double &z2, bool &Zero)

{.x=x1;.y=y1;.z=z1;.x=x2;.y=y2;.z=z2;=Zero;

}isoline::view(int &isolineSize)

{(zero)

{(2*isolineSize);d(0,0,0,1);

}

{(1*isolineSize);d(0,0,0,0.5);

}(GL_LINES);d(a.x,a.y,a.z+UE);d(b.x,b.y,b.z+UE);();

}figure::activate(double figh, double h)

{(length<figh)

a.x;=line->a.y;=line->a.z;r;(line->b.x-line->a.x,line->b.y-line->a.y,r,angle);=deg(angle);=1;s=FormatFloat("0.00",h);(s[s.Length()]==0)s=s.SubString(1,s.Length()-1);(s[s.Length()]==0)s=s.SubString(1,s.Length()-2);i;(i=0;ia.y, r, angle);=deg(angle);=1;s=FormatFloat("0.00",h);(s[s.Length()]==0)s=s.SubString(1,s.Length()-1);(s[s.Length()]==0)s=s.SubString(1,s.Length()-2);i;(i=0;i<s.Length()&&i<8;i++)

{[i]=s[i+1];

}=i;

}

{=0;

}

}figure::view(int size)

{();(!exists) return;(GL_TEXTURE_2D);(GL_BLEND);(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);(GL_TEXTURE_2D,0);(1,1,1,0,0,0,0,0,0,0,120);f(1,1,1);figsize=size*0.001875;

#define FIGCF 1.0

#define FIGDS 0.5

#define FIGSM 0.0005k=0;();(x,y,z);(angle,0,0,1);(int i=0;i<strl;i++)

{(str[i]>=0 && str[i]<=9) k=str[i]-0;(str[i]==. || str[i]==,) k=10;(str[i]==-) k=11;(GL_QUADS);f(k/16.0,0);d(-figsize*0.5+figsize*FIGDS*i,-figsize*0.5*FIGCF,i*FIGSM);f(k/16.0,1);d(-figsize*0.5+figsize*FIGDS*i,figsize*0.5*FIGCF,i*FIGSM);f((k+1)/16.0,1);d(figsize*0.5+figsize*FIGDS*i,figsize*0.5*FIGCF,i*FIGSM);f((k+1)/16.0,0);d(figsize*0.5+figsize*FIGDS*i,-figsize*0.5*FIGCF,i*FIGSM);();

}(GL_TEXTURE_2D);(GL_BLEND);();

}bath::triangulation()

{file("input.txt");(!file.is_open()) return 0;<<"2 RBOX s 4 W0 c D2\n";<<q.size()<<"\n";buffer [50];("СОКО - сохранение точек");(int i=0;i<q.size();i++)

{(buffer, "%.19f %.19f\n", q[i].m.x, q[i].m.y);<<buffer;

}.close();("СОКО - расчёт триангуляции");(AnsiString("qdelaunay TI input.txt s i Qt TO output.txt").c_str());

//ShowMessage("");("СОКО - чтение треугольников");

ifstream file2("output.txt");

>n;.make(n);(int i=0;in;.make(n);(int i=0;i<n;i++)

{>>x;[i].a=x;>>x;[i].b=x;>>x;[i].c=x;

}("СОКО - треугольники прочитаны");.close();

remove("input.txt");("output.txt");

SetTitle("СОКО - временные файлы удалены");

return 1;

}::bath()

{();

}bath::LoadPoints(AnsiString FileName, bool merkator, bool minus)

{();file0(AnsiString(FileName+".dat").c_str());.close();file(FileName.c_str());tmp[30];val;size=0;(!file.is_o