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

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

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

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

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

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

Język ludzki kod maszynowy

Wcięcie kątowe wstecz

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

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

Definicje. Algorytm to:

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

Zasady programowania Dokumentacja

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI STYCZEŃ Arkusz I. Czas pracy: 60 minut Liczba punktów do uzyskania: 15

Algorytm. a programowanie -

Podstawy i języki programowania

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Wstęp do programowania

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

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

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

Palindromy. Przykładowe rozwiązanie

1 Wprowadzenie do algorytmiki

Definicja pochodnej cząstkowej

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

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Język C zajęcia nr 5

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

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

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

Zadanie : Wyznaczyć położenie głównych centralnych osi bezwładności i obliczyć główne centralne momenty bezwładności Strona :1

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Podstawy Programowania Algorytmy i programowanie

3. PŁASKI STAN NAPRĘŻENIA I ODKSZTAŁCENIA

Pliki. Informacje ogólne. Obsługa plików w języku C

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Wyszukiwanie największej spośród czterech liczb. Przykładowe rozwiązanie

Co nie powinno być umieszczane w plikach nagłówkowych:

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

EGZAMIN MATURALNY 2011 INFORMATYKA

Podstawy programowania C. dr. Krystyna Łapin

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

I. Podstawy języka C powtórka

Programowanie strukturalne i obiektowe

Algorytmy. Programowanie Proceduralne 1

Programowanie w językach wysokiego poziomu

Warsztaty dla nauczycieli

Proste programy w C++ zadania

Funkcja (podprogram) void

if (wyrażenie ) instrukcja

Programowanie strukturalne i obiektowe. Funkcje

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:

Funkcje zawarte w bibliotece < io.h >

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

ECDL Podstawy programowania Sylabus - wersja 1.0

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Pytania sprawdzające wiedzę z programowania C++

Ilość cyfr liczby naturalnej

Funkcje zawarte w bibliotece < io.h >

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

Struktury Struktura polami struct struct struct struct

Wstęp do Informatyki

Instrukcje sterujące

Programowanie w Turbo Pascal

Pliki. Informacje ogólne. Obsługa plików w języku C

Projektowanie algorytmów rekurencyjnych

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

gruparectan.pl 1. Szkic projektu Strona:1

FUNKCJE MATEMATYCZNE, np. atan2(y,x);

Rekurencja (rekursja)

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

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

Podstawy Programowania

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

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

Grafika PHP dla początkujących

n, m : int; S, a, b : double. Gdy wartości sumy składowej nie można obliczyć, to przyjąć Sij = 1.03 Dla obliczenia Sij zdefiniować funkcję.

Podstawy Programowania Podstawowa składnia języka C++

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

Proste algorytmy w języku C

Programowanie, algorytmy i struktury danych

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

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

4. Funkcje. Przykłady

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

ALGORYTMY I STRUKTURY DANYCH

Matematyka licea ogólnokształcące, technika

Metody przybliżonego rozwiązywania równań różniczkowych zwyczajnych

C-struktury wykład. Dorota Pylak

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

KOŁO MATEMATYCZNE LUB INFORMATYCZNE - klasa III gimnazjum, I LO

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Laboratorium z informatyki sem.iii/ćw. 4 Wydział Transportu PW /19

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

Transkrypt:

Obliczenie azymutów ze współrzędnych punktów tablica struktur punktów, tablica struktur azymutów Pojęcie azymutu w geodezji Azymut jest to kąt mierzony od kierunku północy (osi X) zgodnie z ruchem wskazówek zegara do kierunku odcinka (wektora). Azymut ma dodatni znak oraz przyjmuje wartości z przedziału 0g 400g. Azymutem lub kątem kierunkowym odcinka skierowanego (wektora) AB (o początku A i koocu B) nazywamy kąt zawarty pomiędzy kierunkiem dodatniego kierunku osi równoległej do osi X w punkcie początkowym A a kierunkiem do drugiego punktu koocowego B, liczony zgodnie z ruchem wskazówek zegara i mogący przyjmowad wartości od 0 g do 400 g, lub 0 o 360 o lub 0 2PI [rad].

Algorytmy obliczania azymutów, przy założeniu, że punkt początkowy to P i koocowy K I metoda obliczenia azymutu wykorzystanie funkcji arctan(dy/dx) i badanie położenia wektora względem układu lokalnego współrzędnych DX, DY, zaczepionego w punkcie P, równoległego do układu współrzędnych XY 1. Przyrosty współrzędnych odcinka : X = X K X P Y = Y K Y P 2. Uwzględnienie znaków przyrostów współrzędnych jeżeli X > 0 oraz Y > 0 to A = arctg ΔX jeżeli X > 0 oraz Y < 0 to A = arctg 400 g ΔX jeżeli X < 0 to A = arctg ΔX g + 200 3. Przypadki szczególne, gdy kierunek wektora jest równoległy do osi układu współrzędnych a) b) ΔX 0 oraz ΔX 0 oraz ΔX g 100 g 300 g 0 g 200 Azymut odcinka (wektora) KP = A + 200 g Procedura w języku C może byd zapisana np. następująco double az1(double x1, double y1, double x2, double y2) { double pi, rg, dx, dy, d, a, az ; // zmienne pi = 4.0 * atan(1.0); rg = 200.0 / pi; // PI i RO[grad] dx=x2-x1; dy=y2-y1; // przyrosty if (dx==0) // jeśli dx równa się 0 { if (dy>0) a=pi/2; else a=1.5*pi; } // if dx==0 else { // if (dx!= 0) a = atan(dy / dx); if (dx < 0) a = a + pi;

else { if (dy < 0) a = a + 2 * pi; } // if dy<0 } // koniec if (dx!= 0) az = a * rg; // obliczenie azymutu w gradach return az; } II Metoda wykorzystanie funkcji atan2(dy, dx) języka C i M_PI = PI 200/M_PI RO[gradowe] X =dx=x2-x1; Y =dy=y2-y1; az = atan2(dy, dx) * 200.0/M_PI; if (az <0) az=az+400.0;

III Metoda tradycyjne wykorzystanie czwartaków RG=200.0/M_PI; Ro[grad] Jeśli dx <> 0 to czw=rg*atan(dy/dx); // czwartak w gradach Uwzględnienie dwiartek układu współrzędnych w dwiartka (1 4) w=41 granica dwiartki 4 i 1; w=12 granica dwiartki 1 i 2 itd. Zapis w języku C np. postaci: if (dx>0 && dy>0) {w=1; az = czw; break; } // I dwiartka if (dx<0 && dy>0) {w=2; az = 200.0-czw; break; } if (dx<0 && dy<0) {w=3; az = 200.0+czw; break; } if (dx>0 && dy<0) {w=4; az = 400.0-czw; break; } // IV dwiartka if (dx>0 && dy==0) {w=41; az=0; break; } // granica dwiartek 4 i 1 if (dx==0 && dy>0) {w=12; az=100.0; break; } if (dx<0 && dy==0) {w=32; az=200.0; break; } if (dx==0 && dy<0) { w=43; az=300.0; break; // granica dwiartek 4 i 3

SCHEMAT BLOKOWY OBLICZENIA AZYMUTU METODĄ CZWARTAKÓW Specyfikacja problemu algorytmicznego i opis użytych zmiennych Problem algorytmiczny: Obliczenie azymutu wektora (odcinka skierowanego) o danych współrzędnych początku i kooca. Dane wejściowe: Wykaz punktów: NR X Y (podaje się ilośd i wprowadza dane z klawiatury) Następnie wprowadza się wykaz numerów: P K (gdzie P = NRP nr początkowy odcinka (wektora) a K = NRK nr koocowy odcinka). Dane wyjściowe (wyniki): Wykaz numerów punktów i współrzędnych oraz wykaz azymutów i długości dla podanych boków Opis metody zastosowanej w programie dane i wyniki Wykaz punktów: NR X Y (podaje się ilośd i wprowadza dane z klawiatury) Punkt tworzy strukturę struct pkty { long int nr; double x, y; }; Wykaz punktów zapisywany jest w tablicy struktur: pkty t*maxp+; Za MAXP przyjęto 50. Tablica może więc zapamiętad 50 punktów. Po wprowadzeniu punktów podaje się nazwę pliku wyników. Do pliku zapisywany jest wykaz współrzędnych. Następnie wprowadza się wykaz numerów: P K (gdzie P = NRP nr początkowy odcinka wektora, a K = NRK nr koocowy odcinka). Wprowadzenie NRP = 0 kooczy wprowadzanie wykazu odcinków. Na bieżąco są znajdowane punkty w tablicy współrzędnych i obliczane azymuty i wyświetlane oraz drukowane do pliku. Pseudokod funkcji głównej algorytm zapisany za pomocą listy kroków 1. Wyświetl nagłówek programu 2. Wprowadź ilośd punktów n 3. Uruchom wprowadzenie wykazu punktów: Nr X Y i zapamiętaj w tablicy - czytajpunkty (t,n); 4. Wyświetl punkty funkcja wyswietlpunkty (t,n); 5. Wczytaj wykaz boków - funkcja czytajboki(t, n); - czytaj wykaz boków do obliczenia azymutów, szukaj współrzędnych i licz azymuty, gdy NRP = 0 to zakoocz: Czytaj NRP, jeśli NRP <> 0 to czytaj NRK i licz azymut

SCHEMAT BLOKOWY PROGRAMU FUNKCJA GŁÓWNA START Wyświetl nagłówek programu Wczytaj ilość punktów n Wprowadź wykaz Nr(i) X(i) Y(i) i=1..n Funkcja czytajpunkty (t,n); Wyświetl punkty funkcja wyswietlpunkty (t,n); Wczytaj wykaz boków - funkcja czytajboki(t, n) Instrukcje i funkcje funkcji głównej /* ========================== */ int main() // funkcja glowna { const int MAX=50; int n=0, m=0; puts("program azymplik.cpp\n"); printf("obliczenie azymutow i dlugosci bokow ze wspolrzednych\n"); NL; // nowa linia printf("\nwprowadz ilosc punktow: "); scanf("%d",&n); // pobranie ilości punktów n fflush(stdin); // czyści bufor danych czytajpunkty (t,n); // wczytanie n punktów i współrzędnych do tablicy t wyswietlpunkty (t,n); // wyświetlenie wykazu punktów i współrzędnych czytajboki(t, n); // wczytanie wykazu boków return 0; // zwraca funkcja główna } /* ======================== */ Niektóre funkcje dodatkowe // azymut - metoda z atan() double az1(double x1, double y1, double x2, double y2) // azymut - funkcja atan2(dy,dx) double az2(double x1, double y1, double x2, double y2) // azymut czwartaki double az3(double dx, double dy ) STOP

// odległośd ze współrzędnych double odl(double x1, double y1, double x2, double y2) Przykład wyników Program azympl1.cpp Obliczenie azymutów ze współrzędnych punktów Wykaz współrzędnych punktów Lp Nr X Y 0 1 0.000 0.000 1 2 1.000 0.000 2 3 1.000 1.000 3 4-1.000-1.000 Lp NrP NrK Azym[grad] Azym2[grad] Azym[st_mi_sek] Dlugosc 1 1 2 0.0000 0.0000 0st 0' 0.0" 1.000 2 1 3 50.0000 50.0000 45st 0' 0.0" 1.414 3 1 4 250.0000 250.0000 225st 0' 0.0" 1.414 4 4 1 50.0000 50.0000 45st 0' 0.0" 1.414 Obliczył: A. Iksinski