Obliczenie ciągów poligonowych otwartych, obustronnie nawiązanych

Podobne dokumenty
Obliczenie azymutów ze współrzędnych punktów tablica struktur punktów, tablica struktur azymutów

Wyrównanie ciągu poligonowego dwustronnie nawiązanego metodą przybliżoną.

Transformacja współrzędnych przy 2 punktach dostosowania - przez wydłużenie i skręt lub transformacja liniowa

Wcięcie kątowe wstecz

Obliczenie pola wieloboku na podstawie współrzędnych wierzchołków

Pole trójkąta ze współrzędnych punktów : P1(x1,y1), P2(x2,y2), P3(x3,y3)

Obliczenie azymutu ze współrzędnych wersja C++ Builder

Zadanie egzaminacyjne

Obliczenie azymutów ze współrzędnych punktów Azymuty i długości - tablica struktur, funkcje, zapis wyników do pliku

// Funkcja glowna int main() { // zmienne int kont='t'; double x1, y1, x2, y2, x3, y3, a, b, c, p1, p2, p3, pole, ha, hb, hc;

Rys Szkic sieci kątowo-liniowej. Nr X [m] Y [m]

PROGRAM GEO Folder ten naleŝy wkleić do folderu osobistego: D:\inf1\nazwisko\GEO89

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Niwelacja C-Geo. Zad.1 Dany dziennik pomiaru ciągu niwelacji technicznej o reperach nawiązania RpA i RpB. Wprowadzić dane i obliczyć wysokości

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Geomatyka02 Wczytanie danych, obliczenie długości, azymutu i kąta ze współrzędnych. Przygotowanie do pracy

Instrukcje sterujące

GEODEZJA*KARTOGRAFIA*GEOINFORMATYKA

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

wagi cyfry pozycje

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Zasady programowania Dokumentacja

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Wykład z Technologii Informacyjnych. Piotr Mika

Definicje. Algorytm to:

PRZYKŁADY OPERACJI PLIKOWYCH z wykorzystaniem biblioteki <stdio.h>

ciężkości. Długości celowych d są wtedy jednakowe. Do wstępnych i przybliżonych analiz dokładności można wykorzystywać wzór: m P [cm] = ± 0,14 m α

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Przykładowe zadanie egzaminacyjne w części praktycznej egzaminu w modelu d dla kwalifikacji B.35 Obsługa geodezyjna inwestycji budowlanych

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Obliczenie powierzchni w C-Geo. Działki, użytki

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Pętla for. Wynik działania programu:

GPSz2 WYKŁAD 15 SZCZEGÓŁOWA WYSOKOŚCIOWA OSNOWA GEODEZYJNA

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

XV Konkurs Informatyczny dla gimnazjalistów III ETAP

Obliczenia w geodezyjnym układzie współrzędnych

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

1. Otwórz skoroszyt Zadania 03.xlsx i zapisz pod nową nazwą: Wykonane zadanie 3.xlsx.

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Podstawy Programowania Algorytmy i programowanie

WYZNACZENIE CHARAKTERYSTYK STATYCZNYCH PRZETWORNIKÓW POMIAROWYCH

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

INSTRUKCJE ITERACYJNE

Transformacja współrzędnych

Technologia informacyjna Algorytm Janusz Uriasz

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja;

WARUNEK ZOSTAŁ SPAENIONY WARUNEK NIE ZOSTAŁ SPEŁNIONY

Algorytm. Krótka historia algorytmów

Temat 20. Techniki algorytmiczne

Programowanie w języku Python. Grażyna Koba

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Podstawy Programowania

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2013 CZĘŚĆ PISEMNA

Podstawowe I/O Liczby

do instrukcja while (wyrażenie);

Programowanie i techniki algorytmiczne

Układy VLSI Bramki 1.0

1 Wprowadzenie do algorytmiki

Sortowanie przez wstawianie Insertion Sort

Orientacja pojedynczego zdjęcia

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Sposoby przedstawiania algorytmów

ZADANIE 1. Ważenie (14 pkt)

Algorytm. a programowanie -

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Język ludzki kod maszynowy

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

KARTA PRACY UCZNIA. Klasa II

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Warsztaty dla nauczycieli

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Przykład projektowania łuku poziomego nr 1 z symetrycznymi klotoidami, łuku poziomego nr 2 z niesymetrycznymi klotoidami

Algorytmika i programowanie. dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

REGULATOR PI W SIŁOWNIKU 2XI

Agnieszka Nowak Brzezińska

2 π. przyspieszenia nie następował zbyt szybko. A w3

Polcode Code Contest PHP-10.09

- - Ocena wykonaniu zad3. Brak zad3

Programowanie w Turbo Pascal

SZACUNEK PORÓWNAWCZY GRUNTÓW

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

Zapisywanie algorytmów w języku programowania

Przykład projektowania łuku poziomego nr 1 z symetrycznymi klotoidami, łuku poziomego nr 2 z niesymetrycznymi klotoidami i krzywej esowej ł

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Rozdział 7 ZARZĄDZANIE PROJEKTAMI

Agnieszka Nowak Brzezińska Wykład III

Rozdział 1 PROGRAMOWANIE LINIOWE

Podstawy programowania C. dr. Krystyna Łapin

Transkrypt:

Obliczenie ciągów poligonowych otwartych, obustronnie nawiązanych Dane: punkty A i B nawiązania ciągu, kąty a i boki d ciągu wiszącego Zadanie: obliczyd współrzędne punktów ciągu od 1 do n a1 a2 a3 kąty lewe w gradach o========o-------------*-------------*--------*---------o=========o kierunek ciągu A B d1 1 d2 2... n-1 C D A, B, oraz C, D - punkty nawiązania; 1...n punkty wyznaczane Specyfikacja problemu algorytmicznego: Problem algorytmiczny: Wyznaczyd współrzędne punktów ciągu poligonowego dwustronnego Dane wejściowe: 4 punkty nawiązania ciągu wiszącego (numery punktów A, B, C, D liczby całkowite long oraz ich współrzędne liczby rzeczywiste podwójne precyzji). oraz pomierzonych n kątów lewych w gradach i (n-1) długości boków wyznaczających punkty ciągu. Dane wyjściowe: współrzędne punktów wyznaczanych ciągu dwustronnego Algorytm obliczeo przyjęty w programie W programie założono, że są kąty pomierzone lewe w gradach (ilośd n) i dane są współrzędne 4 punktów nawiązania: A, B, C, D jak na rys. wyżej. Wprowadź dane punktów nawiązania: boku początkowego A, B i koocowego C, D numery i współrzędne. Oblicz azymuty boków nawiązania ze współrzędnych. Wprowadź ilośd pomierzonych kątów n. (Ilośd pomierzonych boków = n-1). Wprowadź kolejne pomierzone dane: kąty i boki oraz numery punktów wyznaczanych. Po wprowadzeniu danych na punkcie ostatnim wyznaczanym (kąt na punkcie i bok do punktu nawiązania C) wprowadź jeszcze tylko kąt na punkcie nawiązania C. W trakcie wprowadzania obliczaj na bieżąco azymuty jak dla ciągu wiszącego: An = Ap_+ a -200[grad] oraz suma bieżąca kątów sk i suma boków sl. Po wprowadzeniu danych liczona jest odchyłka kątowa fk Fk=[a]p -=[a]t [a]t = Ak Ap + n*200[grad] Obliczenie odchyłki kątowej maksymalnej: fktmax = m0* n gdzie m0=180cc dla ciągów do 1,2km lub 90cc dla ciągów > 1,2km Obliczenie poprawki na każdy kąt: vkt = -fkt/n i katów poprawionych: a popr = a pom+ vkt Obliczenie azymutów kolejnych boków na podstawie azymutu początkowego i kątów poprawionych : An = Ap + apopr -200[grad] Obliczenie przyrostów współrzędnych poszczególnych boków: DX=d*cos(A) DY=d*sin(A) i sum bieżących: SDX= DX1 + DX2.. i SDY = DY1 + DY2 Obliczenie sum przyrostów praktycznych i teoretycznych: [DX]p = DX2 + DX2 + DX(n-1) = SDX [DY]p = DX1+ DX2 + DX2 + DX(n-1) = SDY [DX]t = XC XB [DY]t = YC-YB Obliczenie odchyłek przyrostów: fx=[dx]p-[dx]t; fy=[dy]p-[dy]t Obliczenie odchyłki liniowej fl= (fx 2 + fy 2 ) i porównanie z dopuszczalną flmax (w programie nie jest liczona) Rozrzucenie odchyłek przyrostów proporcjonalnie do długości boków vx i =fx/l*d i vy i =-fy/l*d i Obliczenie przyrostów poprawionych: DXp=DX+vx DYp=DY+vy Obliczenie współrzędnych punktów poligonowych Pi Pn-1 na podstawie współrzędnych punktów poprzednich: X 1 = X B + DX 1 ; Y 1 = Y B + DY 1 X2 = X1 + DX2; Y2 = Y1+ DY1 X i+1 = Xi + Dx i ; Y i+1 = Yi + DYi Kontrola: XD = X n-1 + DX n-1 YD = Y n-1 + DY n-1

Obsługa programu Dane do programu wprowadza się z klawiatury ale istnieje możliwośd założenia pliku danych i wykorzystania go do programu zamiast wprowadzania konwersacyjnego. Uruchomienie programu w przypadku wykorzystania pliku danych i dodatkowego wyprowadzenia pliku obliczeo pośrednich, oprócz standardowego pliku wyników Wc2st1.txt Ogólnie Nazwa_programu < plik_danych >plik_wyników W tym przypadku Ciag2st1.exe < plik_danych >plik_wyników Np. Ciag2st1.exe <d1.txt >w1.txt Przykład danych (np. d1.txt) 100 2000.00 3000.00 // nra xa ya 200 2010.00 3300.00 // nrb xb yb 300 1719.50 3932.75 // nrc xc yc 400 1421.10 4199.10 // nrd xd yd 5 // ilośd kątów 245.5720 150.00 // kąt na punkcie nawiązania A // kąt i bok z punktu A do następnego punktu 1 1 // pierwszy punkt wyznaczany 154.3320 200.00 // kąt na punkcie 1 i bok do następnego 2 2 254.8050 175.50 // kąt i bok 3 // ostatni punkt wyznaczany 170.20 210.80 // kąt i bok na punkcie wyznaczanym ostatnim 230.8090 // kąt na punkcie nawiązania C Przykład uruchomienia programu z wprowadzeniem danych z pliku d1.txt i wyprowadzeniem pośrednim do pliku w1.txt. Automatycznie zapisywany jest plik wyników Wc2st11.txt Program ciag2st1.cpp Obliczenie ciagu poligonowego otwartego, dwustronnie nawiazanego o============o---------*---------*--------*------o========o A B 1 2... n C D Punkty nawiazania: A, B oraz C i D Stale do obliczen: M_PI=3.14159 ROG=63.662 rog = 63.662 Dane oddzielamy spacja Wprowadz dane punktow nawiazania: A, B, C, D Wprowadz NrA xa ya => Wprowadz NrB xb yb => Wprowadz NrC xc yc => Wprowadz NrD xd yd => Wprowadz ilosc katow pomierzonych n (o 2 wieksza od ilosci punktow wyznaczanych => Az pocz ap = 97.8787 ap1 = 97.8787 Az pocz = 97.8787 ap2 = 97.8787 Az konc = 153.609 ak1 = 153.609 Pkt A = 100 x = 2000 y = 3000 Pkt B = 200 x = 2010 y = 3300 Pkt C = 300 x = 1719.5 y = 3932.75

Pkt D = 400 x = 1421.1 y = 4199.1 Az(A-B)=97.8787 Az(C-D)=153.609 Lp = 1 Stanowisko 200 Wprowadz kat[grad] w punkcie 200 => Kat = 245.572 Lp = 1 Stan = 200 tk[i]= 245.572 sk = 245.572 Wprowdz bok od punktu 200 do nastepnego => Bok = 150 Suma biezaca dlugosci sl = 150 Wprowadz Nr nastepnego punktu wyznaczanego => np = 1 Nr nastepny = 1 Lp=1 Pkt 200 Kat = 245.572 Bok = 150 Azymut boku 200-1 = 143.451 dx=-94.6128 dy= 116.398 Punkt nastepny 1 x=1915.39 y= 3416.4 Suma biezaca dlugosci sl do punktu 1 = 150 Lp = 2 Stanowisko 1 Wprowadz kat[grad] w punkcie 1 => Kat = 154.332 Lp = 2 Stan = 1 tk[i]= 154.332 sk = 399.904 Wprowdz bok od punktu 1 do nastepnego => Bok = 200 Suma biezaca dlugosci sl = 350 Wprowadz Nr nastepnego punktu wyznaczanego => np = 2 Nr nastepny = 2 Lp=2 Pkt 1 Kat = 154.332 Bok = 200 Azymut boku 1-2 = 97.7827 dx=6.96438 dy= 199.879 Punkt nastepny 2 x=1922.35 y= 3616.28 Suma biezaca dlugosci sl do punktu 2 = 350 Lp = 3 Stanowisko 2 Wprowadz kat[grad] w punkcie 2 => Kat = 254.805 Lp = 3 Stan = 2 tk[i]= 254.805 sk = 654.709 Wprowdz bok od punktu 2 do nastepnego => Bok = 175.5 Suma biezaca dlugosci sl = 525.5 Wprowadz Nr nastepnego punktu wyznaczanego => np = 3 Nr nastepny = 3 Lp=3 Pkt 2 Kat = 254.805 Bok = 175.5 Azymut boku 2-3 = 152.588 dx=-129.038 dy= 118.952 Punkt nastepny 3 x=1793.31 y= 3735.23 Suma biezaca dlugosci sl do punktu 3 = 525.5 Lp = 4 Stanowisko 3 Wprowadz kat[grad] w punkcie 3 => Kat = 170.2 Lp = 4 Stan = 3 tk[i]= 170.2 sk = 824.909

Wprowdz bok od punktu 3 do nastepnego => Bok = 210.8 Suma biezaca dlugosci sl = 736.3 Nr nastepny = 300 Lp=4 Pkt 3 Kat = 170.2 Bok = 210.8 Azymut boku 3-300 = 122.788 dx=-73.8545 dy= 197.439 Punkt nastepny 300 x=1719.46 y= 3932.67 Suma biezaca dlugosci sl do punktu 300 = 736.3 Lp = 5 Stanowisko 300 Wprowadz kat[grad] w punkcie 300 => Kat = 230.809 Lp = 5 Stan = 300 tk[i]= 230.809 sk = 1055.72 Suma biezaca dlugosci sl = 736.3 Nr nastepny = 400 Lp=5 Pkt 300 Kat = 230.809 Bok = 210.8 Azymut boku 300-400 = 153.597 dx=-157.237 dy= 140.403 Punkt nastepny 400 x=1562.22 y= 4073.07 Suma biezaca dlugosci sl do punktu 400 = 736.3 ===========Wyniki po wprowadzeniu wszystkich danych========= sk(prakt) = 1055.72 sk(teor) = 1055.73 fk1 = Skt(prakt)-Skt(teor) = -0.0122759 fk=ak(obl)-ak(teor) = -0.0122759 vk=0.00245518 Suma dlug ciagu sl = 736.3 Suma DXprakt = -290.605 SDXt = -290.5 Suma DYprakt = 632.638 SDYt = 632.75 fx=-0.104761 fy=-0.112286 fl= 0.153567 Wyniki w pliku: Wc2st1.txt Nacisnij Enter

Przykład wyników plik Wc2st1.txt Program cia2st1.cpp Obliczenie ciagu poligonowego dwustronnego o========o---------*---------*--------*---------o=========o A B 1 2... n C D A, B, oraz C, D - punkty nawiazania; 1...n punkty wyznaczane Obliczenie ciagu poligonowego wiszacego, nawiazanego do punktow A i B Pkt Kat Azymut Bok DX DY X Y pomierzony ----------------------- [grad] [grad] 100 97.8787 2000.000 3000.000 pkt A 200 245.5720 143.4507 150.000-94.613 116.398 2010.000 3300.000 pkt B 1 154.3320 97.7827 200.000 6.964 199.879 1915.387 3416.398 2 254.8050 152.5877 175.500-129.038 118.952 1922.352 3616.276 3 170.2000 122.7877 210.800-73.855 197.439 1793.314 3735.228 Obliczenie ciagu poligonowego otwartego, nawiazanego dwustronnie Pkt Kat wyr. Azymut Bok DX vdx DY vdy X Y -------------------------------------- 100 97.8787 2000.000 3000.000 pkt A 200 245.5745 143.4532 150.000-94.617 0.021 116.394 0.023 2010.000 3300.000 pkt B 1 154.3345 97.7876 200.000 6.949 0.028 199.879 0.030 1915.404 3416.417 2 254.8075 152.5951 175.500-129.051 0.025 118.937 0.027 1922.381 3616.327 3 170.2025 122.7975 210.800-73.885 0.030 197.428 0.032 1793.355 3735.290 300 230.8115 153.6090 1719.500 3932.750 pkt C 400 1421.100 4199.100 pkt D Katy w gradach Zestawienie sum i odchylek Sumy katow: [katow]prakt. =1055.7180[grad] [katow]teor. =1055.7303[grad] Odchylka katowa=-0.0123[grad] = -122.8[cc] m0 = 180[cc]; fktmax = m0*sqrt(n)= 402.5[cc] Poprawka kata =0.00246[grad] = 24.6[cc] Dlugosc ciagu = 736.300[m] Sumy przyrostow: [DX]prakt. = -290.605 [DY]prakt. = 632.638 [DX]teoret. = -290.500 [DY]teoret. = 632.750 Odchylki przyrostow i odchylka liniowa: fx =-0.105 fy =-0.112 fl =0.154

Algorytm programu w postaci listy kroków 1. Deklaracja zmiennych i tablic 2. Otwórz plik wyników "Wc2st1.txt" w trybie dopisywania, wydrukuj nagłówek programu ze szkicem 3. Wyświetl nagłówek programu i schemat ciągu wiszącego z oznaczeniami 4. Wprowadź dane punktów nawiązania A, B, C, D 5. Wprowadź ilośd kątów pomierzonych n (o 2 większa od ilości punktów wyznaczanych) 6. Oblicz i wyświetl azymuty boków nawiązania A - B i C-D i sumy teoretyczne przyrostów 7. Wyświetl wyniki 8. Wstaw wyniki obliczeo do odpowiednich tablic i ustaw wartości aktualne do dalszych obliczeo 9. Wykonuj cyklicznie dla podanej ilości kątów n w pętli for: Wprowadź kąt, bok. Oblicz bieżące sumy katów, sumy długości, azymuty i przyrosty ciągu wiszącego, opartego o bok AB Wprowadź numer punktu następnego (jeśli to nie jest już punkt przedostatni, bo wtedy następny = D) Wyświetl dane obliczeo bieżących: azymut, dx, dy, x, y, sumę długości. Zwiększ w pętli licznik bieżący kąta o 1 (pętla for) 10. Przejdź do punktu 9 jeśli licznik kątów nie przekroczył wartości n 11. Oblicz sumę kątów, odchyłkę kątową i poprawkę kąta oraz odchyłkę kątowa maksymalną 12. Wydrukuj wyniki obliczenia ciągu wiszącego do pliku 13. Oblicz kolejne kąty poprawione, azymuty i przyrosty z azymutów wyrównanych oraz sumy bieżące przyrostów (w pętli for) 14. Oblicz odchyłki przyrostów fx i fy i odchyłkę liniową fl. 15. Dla kolejnych boków oblicz poprawki przyrostów, poprawione przyrosty i kolejne, ostateczne współ rzędne punktów, dochodząc do punktu nawiązania C (w pętli for). 16. Wydrukuj zestawienie wyników do pliku. Współrzędne obliczone punktu C powinny byd równe współrzędnym danym. 17. Zamknij plik wyników. 18. Zakoocz program

SCHEMAT BLOKOWY PROGRAMU START Wyświetlenie nagłówek programu, otwórz plik wyników Wprowadź dane punków nawiązania: A, B, C, D: nr, X, Y Wprowadź ilośd kątów pomierzonych n ap=az(xa, ya, xb, yb); // azymut AB ak=az(xc, yc, xd, yd); // Wyświetl wyniki i=1 // pętla for (int i=1; i<=n; i++) i <=n T N Wprowadź kąt i bok (do punktu następnego) Oblicz bieżące sumy katów, sumy długości, azymuty i przyrosty ciągu wiszącego, opartego o bok AB Wprowadź nr punktu wyznaczanego następnego np i=i+1 Oblicz sumę kątów, odchyłkę kątową i poprawkę kąta oraz odchyłkę kątowa Wydrukuj wyniki obliczenia ciągu wiszącego do pliku 1

1 Oblicz kolejne kąty poprawione, azymuty i przyrosty z azymutów wyrównanych oraz sumy bieżące przyrostów dla i = 1 n Oblicz odchyłki przyrostów fx i fy i odchyłkę liniową fl. Dla kolejnych boków oblicz poprawki przyrostów, poprawione przyrosty i kolejne, ostateczne współ rzędne punktów, dochodząc do punktu nawiązania C. dla i=1 n Wydrukuj zestawienie wyników do pliku. Współrzędne obliczone punktu C powinny byd równe współrzędnym danym Zamknij plik wyników KONIEC