Смекни!
smekni.com

Использование современной компьютерной техники и программного обеспечения для решения прикладных (стр. 4 из 6)

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.7 Результаты программы

Рис.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.9 Вычисления в MathCad

Рис. 2.6 Проверка в MathCad 14.

2.10 Анализ

Таким образом, задача №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.3 Исходные данные

Табл. 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


3.5 Текст программы


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);