Readln(t1);
Readln(t1,y3);
Readln(t1);
Readln(t1);
Readln(t1,GB2P3);
Readln(t1);
Readln(t1,MB2P3);
Readln(t1);
Readln(t1,SB2P3);
Begin
{определение приращений координат}
Prir (y1,y2,Dy12);
Prir (x1,x2,Dx12);
Prir (y2,y3,Dy23);
Prir (x2,x3,Dx23);
{проведение контроля полученных значений}
Writeln('Prirasheniya');{вывод на экран надписи "Приращения"}
Writeln(t2,'Приращения');{вывод в фаил надписи "Приращения"}
Writeln('Po oci X dly 1-2');{вывод на экран надписи "По оси X"}
Writeln(t2,'По оси X для 1-2');{вывод в фаил надписи "По оси X"}
Writeln(Dx12:6:2);{вывод значения для X на экран}
Writeln(t2,Dx12:6:2);{вывод значения для X в фаил}
Writeln('Po oci Y dly 1-2');{вывод на экран надписи "По оси Y"}
Writeln(t2,'По оси Y для 1-2');{вывод в фаил надписи "По оси Y"}
Writeln(Dy12:6:2);{вывод значения для Y на экран}
Writeln(t2,Dy12:6:2);{вывод значения для Y в фаил}
Writeln('Po oci X dly 2-3');{вывод на экран надписи "По оси X"}
Writeln(t2,'По оси X для 2-3');{вывод в фаил надписи "По оси X"}
Writeln(Dx23:6:2);{вывод значения для X на экран}
Writeln(t2,Dx23:6:2);{вывод значения для X в фаил}
Writeln('Po oci Y dly 2-3');{вывод на экран надписи "По оси Y"}
Writeln(t2,'По оси Y для 2-3');{вывод в фаил надписи "По оси Y"}
Writeln(Dy23:6:2);{вывод значения для Y на экран}
Writeln(t2,Dy23:6:2);{вывод значения для Y в фаил}
End;
Begin
{нахождение величины румбов}
Rymb (Dx12,Dy12,R12);
Rymb (Dx23,Dy23,R23);
{проведение контроля полученных значений}
Writeln('Rymb 1-2');{вывод на экран надписи "Румб"}
Writeln(t2,'Румб 1-2');{вывод в фаил надписи "Румб"}
Writeln(R12:6:6);{вывод значения на экран}
Writeln(t2,R12:6:6);{вывод значения в фаил}
Writeln('Rymb 2-3');{вывод на экран надписи "Румб"}
Writeln(t2,'Румб 2-3');{вывод в фаил надписи "Румб"}
Writeln(R23:6:6);{вывод значения на экран}
Writeln(t2,R23:6:6);{вывод значения в фаил}
End;
Begin
Writeln('Dly 1-2');
Writeln(t2,'Для 1-2');
Analiz (Dx12,Dy12,R12,Alfa12);
Writeln('Dly 2-3');
Writeln(t2,'Для 2-3');
Analiz (Dx23,Dy23,R23,Alfa23);
End;
Begin
{перевод дирекционного угла в градусную меру}
Gradyc (Alfa12,AlfaGr12,AlfaMi12,AlfaS12);
Gradyc (Alfa23,AlfaGr23,AlfaMi23,AlfaS23);
{вывод полученных дирекционных углов}
Writeln('Direkcionnii ygol 1-2 raven:');
Writeln(t2,'Дирекционный угол 1-2 равен:');
Writeln(AlfaGr12:6:0,' gradycov',AlfaMi12:6:0,' minyt',AlfaS12:6:0,' sekynd');
Writeln(t2,AlfaGr12:6:0,' градусов',AlfaMi12:6:0,' минут',AlfaS12:6:0,' секунд');
Writeln('Direkcionnii ygol 2-3 raven:');
Writeln(t2,'Дирекционный угол 2-3 равен:');
Writeln(AlfaGr23:6:0,' gradycov',AlfaMi23:6:0,' minyt',AlfaS23:6:0,' sekynd');
Writeln(t2,AlfaGr23:6:0,' градусов',AlfaMi23:6:0,' минут',AlfaS23:6:0,' секунд');
End;
Begin
{Координаты искомого пункта}
RB1P1:=(((Pi)/180)*(GB1P1+(MB1P1/60)+(SB1P1/3600)));
RB1P2:=(((Pi)/180)*(GB1P2+(MB1P2/60)+(SB1P2/3600)));
RB2P2:=(((Pi)/180)*(GB2P2+(MB2P2/60)+(SB2P2/3600)));
RB2P3:=(((Pi)/180)*(GB2P3+(MB2P3/60)+(SB2P3/3600)));
xP12:=x1+(((y2-y1)*sin(RB2P2))/(sin(Alfa12)*sin(RB1P1+RB2P2)))*cos(Alfa12-RB1P1);
yP12:=y1+(((y2-y1)*sin(RB2P2))/(sin(Alfa12)*sin(RB1P1+RB2P2)))*sin(Alfa12-RB1P1);
xP23:=x2+(((y3-y2)*sin(RB2P3))/(sin(Alfa23)*sin(RB1P2+RB2P3)))*cos(Alfa23-RB1P2);
yP23:=y2+(((y3-y2)*sin(RB2P3))/(sin(Alfa23)*sin(RB1P2+RB2P3)))*sin(Alfa23-RB1P2);
Writeln('koordinaty iskomogo pynkta');
Writeln(t2,'Координаты искомого пункта');
Writeln('x1-2=');
Writeln(t2,'x1-2=');
Writeln(xP12:6:2);
Writeln(t2,xP12:6:2);
Writeln('y1-2=');
Writeln(t2,'y1-2=');
Writeln(yP12:6:2);
Writeln(t2,yP12:6:2);
Writeln('x2-3=');
Writeln(t2,'x2-3=');
Writeln(xP23:6:2);
Writeln(t2,xP23:6:2);
Writeln('y2-3=');
Writeln(t2,'y2-3=');
Writeln(yP23:6:2);
Writeln(t2,yP23:6:2);
srX:=(xP12+xP23)/2;
srY:=(yP12+yP23)/2;
Writeln('Srednee X');
Writeln(t2,'Среднее X');
Writeln(srX:6:2);
Writeln(t2,srX:6:2);
Writeln('Srednee Y');
Writeln(t2,'Среднее Y');
Writeln(srY:6:2);
Writeln(t2,srY:6:2);
Writeln('chtenie iz faila "in.txt", zapic v "out.txt"');
End;
Close (t1);
Close (t2);
Readkey;
End.
2.6. Содержание фаила «in.txt»
Пункт №1:
Координата X:
5935.51
Координата Y:
5441.24
Горизонтальный угол B1:
Градусы
98
Минуты
4
Секунды
30
-------------------------------
Пункт №2:
Координата X:
5687.41
Координата Y:
5172.76
Горизонтальный угол B1:
Градусы
63
Минуты
0
Секунды
12
Горизонтальный угол B2:
Градусы
41
Минуты
54
Секунды
46
-------------------------------
Пункт №3:
Координата X:
5142.93
Координата Y:
5460.08
Горизонтальный угол B2:
Градусы
54
Минуты
19
Секунды
48
-------------------------------
Рис.2.3 Результаты в Turbo Pascal.
Содержание фаила «rezultat.txt»
Приращения
По оси X для 1-2
-248.10
По оси Y для 1-2
-268.48
По оси X для 2-3
-544.48
По оси Y для 2-3
287.32
Румб 1-2
0.824829
Румб 2-3
0.485558
Для 1-2
III четверть
Дирекционный угол равен(в радианах):
3.966
Для 2-3
II четверть
Дирекционный угол равен(в радианах):
2.656
Дирекционный угол 1-2 равен:
227 градусов 15 минут 33 секунд
Дирекционный угол 2-3 равен:
152 градусов 10 минут 46 секунд
Координаты искомого пункта
x1-2=
5695.54
y1-2=
5735.63
x2-3=
5695.50
y2-3=
5735.70
Среднее X
5695.52
Среднее Y
5735.67
2.8 Табличные вычисления в MS Excel
Рис.2.4 Проверка в MS Excel.
Рис. 2.5 Проверка в MS Excel в режиме отображения формул.
Рис. 2.6 Проверка в MathCad 14.
Таким образом, задача №2 (прямая угловая засечка) была решена с помощью языка программирования Turbo Pascal и затем была проверена с помощью табличного процессора Microsoft Excel 2007 и MathCad 14. Результаты решений совпали, что говорит о правильности выбранного алгоритма решения задачи.
3. Обратная геодезическая засечка
3.1 Теоретические сведения
На плоскости задана система точек
с известными координатами (xi, yi ). При использовании обратной геодезической засечки теодолит располагают непосредственно на точке Р , координаты которой требуется определить. На точки с известными координатами (их должно быть не менее трех) устанавливают визирные цели, после чего измеряют горизонтальные углы (рис.3.1). P
A1
A2
A3
Рис. 3.1. Схема обратной геодезической засечки
Для однозначного определения координат точки Р достаточно рассмотреть два треугольника, однако в этом случае решение задачи является бесконтрольным. Инструкции по проведению геодезических измерений требуют включать, как минимум, четыре точки с известными координатами и определять координаты вставляемой точки, соответственно, по трем или более треугольникам.
Избыточность исходных данных позволяет повысить надежность определения окончательных значений искомых величин за счет применения правила арифметического среднего.
Для определения координат вставляемой точки предварительно определяем вспомогательные величины n и m.
(3.1) (3.2)Далее находим углы
и определяем координаты вставляемой точки. (3.3) (3.4)3.2 Постановка задачи
Обратная геодезическая засечка. Требуется определить координаты точки P по трем точкам с известными координатами и двум известным углам (каждый угол – угол между 2 соседними точками с вершиной в точке P).
Табл. 3.1.
Исходные данные
Пункты | Направления | X | Y |
Хутор | 0 0 0 | 12480.95 | 10219.13 |
Крутик | 100 32 56 | 10241.98 | 12270.54 |
Юрьево | 192 56 33 | 8586.56 | 10552.15 |
Локно | 266 31 50 | 9655.10 | 8220.95 |
3.4. Алгоритм для Turbo Pascal
Program Zadacha3;
Uses CRT;
Var
g1,m1,s1,g2,m2,s2,g3,m3,s3,g4,m4,s4:integer;
x1,y1,x2,y2,x3,y3,x4,y4,vm1,vn1,vm2,vn2:real;
ra1,ra2,ra3,ra4,yg21,yg32,yg43,ct21,ct32,ct43:real;
Fi1,Fi2,Fi3,Fi4,De1,De2,De3,De4:real;
kipX1,kipX2,CredX,kipY1,kipY2,CredY:real;
t1,t2:text;
Begin
ClrScr;
Assign (t1,'data.txt');
Assign (t2,'result.txt');
Reset (t1);
Rewrite (t2);
{чтение из фаила исходных значений}
Readln(t1);
Readln(t1);
Readln(t1,g1,m1,s1);
Readln(t1);
Readln(t1,x1);