Разработка информационной системы для деканата высшего учебного заведения
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
одного слоя изолиний
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