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

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

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

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

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

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

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

Wcięcie kątowe wstecz

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

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

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

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

Podstawy i języki programowania

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

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

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

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

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

4. Funkcje. Przykłady

Algorytm. a programowanie -

Algorytmy. Programowanie Proceduralne 1

Definicje. Algorytm to:

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

Język ludzki kod maszynowy

Język C zajęcia nr 5

IX. Wskaźniki.(3 godz.)

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

Ekoenergetyka Matematyka 1. Wykład 6.

Definicja pochodnej cząstkowej

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

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

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

Wstęp do Informatyki

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

Projektowanie algorytmów rekurencyjnych

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

Instrukcje sterujące

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

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

1 Wprowadzenie do algorytmiki

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

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

Jerzy Nawrocki, Wprowadzenie do informatyki

Energia potencjalna pola elektrostatycznego ładunku punktowego

INSTRUKCJE REPETYCYJNE PĘTLE

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

gruparectan.pl 1. Szkic projektu Strona:1

i = [ 0] j = [ 1] k = [ 0]

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

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Wprowadzenie do Scilab: podstawy języka Scilab

Palindromy. Przykładowe rozwiązanie

ALGORYTMY I STRUKTURY DANYCH

Warsztaty dla nauczycieli

GEOMETRIA ANALITYCZNA W PRZESTRZENI

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

PRZEZNACZENIE I OPIS PROGRAMU

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

Funkcja (podprogram) void

Algorytmy od problemu do wyniku

Struktury Struktura polami struct struct struct struct

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym

Rekurencja (rekursja)

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

Matematyka licea ogólnokształcące, technika

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

Wstęp do Informatyki

Jerzy Nawrocki, Wprowadzenie do informatyki

Schematy blokowe. Algorytmy Marek Pudełko

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

Wykresy i interfejsy użytkownika

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

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

I. Podstawy języka C powtórka

Programowanie strukturalne i obiektowe. Funkcje

Laboratorium nr 1. i 2.

Wstęp do informatyki- wykład 2

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

Zasady programowania Dokumentacja

Ilość cyfr liczby naturalnej

Podstawy Programowania Algorytmy i programowanie

Algorytmy. Programowanie Proceduralne 1

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

rectan.co.uk 1. Szkic projektu Strona:1

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

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski

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

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

Modelowanie zależności. Matematyczne podstawy teorii ryzyka i ich zastosowanie R. Łochowski

SZYBKI ALGORYTM Z MACIERZĄ SHURA DLA MACIERZY TRÓJDIAGONALNYCH

Macierze. Rozdział Działania na macierzach

Wektor położenia. Zajęcia uzupełniające. Mgr Kamila Rudź, Podstawy Fizyki.

EGZAMIN MATURALNY Z INFORMATYKI 13 MAJA 2019 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

FIGURY I PRZEKSZTAŁCENIA GEOMETRYCZNE

Biblioteka standardowa - operacje wejścia/wyjścia

Transkrypt:

Obliczenie azymutów ze współrzędnych punktów Azymuty i dłuości - tablica struktur, funkcje, zapis wyników do pliku Układ współrzędnych eodezyjnych i pojęcie azymutu W eodezji obowiązuje eodezyjny, kartezjaoski, prostokątny układ współrzędnych, w którym oś X skierowana jest pionowo do óry (kierunek północy) a oś Y jest skierowana poziomo w prawo. Kąty i azymuty liczone są w prawo odwrotnie niż w układzie matematycznym, ale zawsze od osi X do osi Y. Wzory matematyczne są takie same w obu układach. Dowolny punkt P w tym układzie określamy parą współrzędnych zapisywaną jako P(X P ; Y P ) Azymutem lub kątem kierunkowym odcinka (wektora) nazywamy kąt zawarty pomiędzy kierunkiem północy (dodatni kierunek osi X) a kierunkiem do druieo punktu (K) (określająceo azymut obliczaneo odcinka), liczony zodnie z ruchem wskazówek zeara (prawoskrętnie) i moący przyjmowad wartości od 0 do 400, lub 0 o 360 o lub 0 2PI [rad]. Azymut w układach dwiartek układu współrzędnych, zaczepioneo w punkcie początkowym A wektora AB

Obliczanie azymutów wektora AB, o początku A i końcu B Alorytmy obliczania azymutów wektor (początek P, koniec K) I metoda 1. Przyrosty współrzędnych odcinka : X = X K X P Y = Y K Y P 2. Uwzlędnienie znaków przyrostów współrzędnych jeżeli X > 0 oraz Y > 0 to A = arct jeżeli X > 0 oraz Y < 0 to A = arct 400 jeżeli X < 0 to A = arct + 200

3. Przypadki szczeólne, dy kierunek wektora jest równoleły do osi układu współrzędnych a) b) dy dy 0 i 0 i Azymut odcinka (wektora) KP = A + 200 0 0 0 0 to to to to A A A A 100 300 0 200 Pseudokod funkcji obliczenia azymutu w wersji anielskiej ( if- jeśli, else w przeciwnym razie Pi=4*arct(1); RG=200/pi; RS=180/pi // Pi, RO[rad], RO[stop] dx=x2-x1; dy=y2-y1 // przyrosty if dx=0 then if dy>0 then a=pi/2 else a=1.5*pi; // azymut w radianach dla dx=0 else if dx <0 then a=a+pi else a=a+2*pi // azymut w radianach dla sx<>0 az=a*r; return az // zwród wartośd azymutu w radach Zapis w proramie double az1(double x1, double y1, double x2, double y2) double pi, r, rs, dx, dy, d, a, az ; pi = 4.0 * atan(1.0); r = 200.0 / pi; rs = 180.0 / pi; dx=x2-x1; dy=y2-y1; if (dx==0) if (dy>0) a = pi / 2; else a = 1.5 * pi; // END 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; az = a * r; // obliczenie azymutu w radach printf ("Azymut w az1 = %10.4lf [rad]\n", az); return az;

II Metoda wykorzystanie funkcji atan2(dy, dx) języka C i M_PI = PI 200/M_PI RO[radowe] X =dx=x2-x1; Y =dy=y2-y1; Zapis w języku C++ double az2(double x1, double y1, double x2, double y2) double dx, dy, result; double PI=M_PI; dx=x2-x1; dy=y2-y1; result = atan2(dy,dx) * 200.0/M_PI; if (result <0) result+=400.0; printf("azymut w az2 = %lf\n", result); return result;

III Metoda tradycyjne wykorzystanie czwartaków Uwzlędnienie dwiartek układu współrzędnych w dwiartka (1 4) w=41 ranica dwiartki 4 i 1; w=12 ranica 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; // ranica 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; // ranica dwiartek 4 i 3 W proramie zastosowana struktura pkty -

zawiera zestawienie boków - danych : BRP NRK x1 y1 x2 y2 i obliczanych azy1, azy2, dlu (azymuty 2 obliczenia i dłuości) Zapis alorytmu proramu łówneo w postaci listy kroków 1. Wyświetl nałówek proramu 2. Wprowadź ilośd boków n 3. Zastosuj funkcję czytaj(t,n) dzie t tablica, n ilośd punktów: Czytaj kolejno wykaz punktów dla podanej ilości boków: Nr1 x1 y1 oraz Nr2 x2 y2, Oblicz azymuty dwoma funkcjami i wprowadź dane i wyniki do tablicy t 4. Zastosuj funkcję wyświetl(t,n) do wyświetlenia wyników i zapisu do pliku SCHEMAT BLOKOWY PROGRAMU GŁÓWNEGO START Wyświetl nałówek proramu Wprowadź ilośd boków n Wczytaj punkty i oblicz azymuty Funkcja czytaj (t,n);

Wyświetl wartości Funkcja wyswietl (t,n); Naciśnij Enter STOP Instrukcje i funkcje funkcji łównej int MAX=50; int n; pkty t*max+; // maksymalna ilośd boków system("cls"); puts("proram az_tabl.cpp - wersja języka C\n"); puts("obliczenie azymutów i dłuości ze współrzędnych - tablica struktur, petla for\n"); puts("numery punktów całkowite typu lon int - do 2147483648\n"); printf("wprowadź ilośd boków: "); scanf("%d",&n); fflush(stdin); czytaj (t,n); // funkcja do wczytania danych i obliczeo wyswietl (t,n); // wyświetlenie i wydruk wyników etch(); Funkcje dodatkowe: Definicje funkcji dodatkowych // azymut ze współrzędnych - z zastosowaniem atan() double az1(double x1, double y1, double x2, double y2) double pi, r, rs, dx, dy, d, a, az ; pi = 4.0 * atan(1.0); r = 200.0 / pi; rs = 180.0 / pi; dx=x2-x1; dy=y2-y1; if (dx==0) if (dy>0) a = pi / 2; else a = 1.5 * pi; // END 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; az = a * r; // obliczenie azymutu w radach printf ("Azymut w az1 = %10.4lf [rad]\n", az); return az; // obliczenie azymutu z atan2(dy,dx) double az2(double x1, double y1, double x2, double y2)

double dx, dy, result; double PI=M_PI; dx=x2-x1; dy=y2-y1; result = atan2(dy,dx) * 200.0/M_PI; if (result <0) result+=400.0; printf("azymut w az2 = %lf\n", result); return result; // odlelosc ze wspolrzednych double odl(double x1, double y1, double x2, double y2) double dx, dy, result; dx=x2-x1; dy=y2-y1; result = sqrt(dx*dx+dy*dy); printf("dluosc = %lf\n", result); return result;