Wcięcie kątowe wstecz

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

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

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

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

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

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

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

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;

Pliki wykład 2. Dorota Pylak

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

Algorytm. a programowanie -

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 α

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja;

Pliki wykład 2. Dorota Pylak

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

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

INSTRUKCJE REPETYCYJNE PĘTLE

Programowanie - wykład 4

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

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

Wielokąty na płaszczyźnie obliczenia z zastosowaniem trygonometrii. Trójkąty. Trójkąt dowolny. Wielokąty trygonometria 1.

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

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Język ludzki kod maszynowy

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

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

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2017 CZĘŚĆ PRAKTYCZNA

Proste programy w C++ zadania

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

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

Ilość cyfr liczby naturalnej

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

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

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

Całkowanie numeryczne - metoda prostokątów

Stosowanie rachunku współrzędnych w obliczeniach geodezyjnych 311[10].Z1.06

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Instrukcje sterujące

Konstrukcje warunkowe Pętle

Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012

tablica: dane_liczbowe

Ćwiczenie nr 3. Temat: Definicje i wykorzystanie funkcji, parametry funkcji

Podstawy Programowania C 02

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

Budowa i generowanie planszy

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

Podstawy i języki programowania

Część 4 życie programu

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; }

Pytania sprawdzające wiedzę z programowania C++

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

Algorytmy, reprezentacja algorytmów.

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

Programowanie komputerowe. Zajęcia 1

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

Liczby całkowite i rzeczywiste

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

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

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

Metody Metody, parametry, zwracanie wartości

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24

Algorytmy. Programowanie Proceduralne 1

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

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

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

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

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

Wykład :37 PP2_W9

Przekazywanie argumentów wskaźniki

Funkcja liniowa i prosta podsumowanie

Wstęp do informatyki- wykład 6

1 Wprowadzenie do algorytmiki

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

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Rekurencja. Przygotowała: Agnieszka Reiter

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

TRYGONOMETRIA. 1. Definicje i własności funkcji trygonometrycznych

Programowanie w językach

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Wstęp do programowania

Definicje. Algorytm to:

Programowanie w języku Python. Grażyna Koba

Podstawy Programowania

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

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

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

1 Wielokrotne powtarzanie tych samych operacji

Kontrola przebiegu programu

I - Microsoft Visual Studio C++

Język C++ zajęcia nr 2

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

Wstęp do Informatyki

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2018 CZĘŚĆ PRAKTYCZNA

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

class Student Deklaracja klasy Osoba: Deklaracja klasy Student:

Transkrypt:

Wcięcie kątowe wstecz Dane: współrzędne 3 punktów: A, B, C oraz kąty α 1 i α 2. Wyznaczyd współrzędne punktu wcinanego P Wcięcie kątowe wstecz polega na wyznaczeniu współrzędnych punktu P z wykorzystaniem pomierzonych kątów α 1 i α 2. Lub α 1) i do znanych punktów A, B i C,. Zadanie to sprowadza się do obliczenia kątów i a następnie do obliczenia współrzędnych punktu P jako wcięcie biegunowe. Wzory X A a s a B τ b P s b S c δ C Y Z czworokąta A, B, C, P obliczamy sumę oraz różnicę kątów i Suma α β 400 g = x b*sinα/a*sinβ = ctg μ μ tg ( -d)/2= tg(g+d)/2*ctg(45+μ) g-d =y Przyjmując g= g =gamma d=d = delta Otrzymujemy

g + d = x x = α β g - d = y 400 g = x g=(x+y)/2=gamma d=(x-y)/2=delta A () = A (AB) +g A (CP) =A (CB) -d BP/sin(g) = a/sin(alfa) Sb = BP =a*sin(alfa)/sin(g) Sa = =a*sin(alfa+gamma)/sin(alfa) Sc= CP =b*sin(beta+gamma)/sin(beta) DX()= *cos(a ) DY()= *sin(a ) DX(CP)= CP *cos(a CP ) DY(CP)= CP *sin(a CP ) X P = X A +DX Y P =Y A +DY W praktyce do obliczenia współrzędnych punktu P wykorzystujemy pomocnicze symbole obliczeniowe formy rachunkowe Hausbrandta. Algorytm wcięcia wstecz wg form Hausbrandta ΔXAB F f g ctgα ΔX X P X f1 f F0 F 1 A 2 2 0 ΔX ΔY 1 AB ΔY Y ΔX W AC - ctg α β Y A 0 ΔY F ΔX ΔY -1 AC Gdzie: F0=F1/F2 Fi = f 1 f 2 F 0 1 Fi [1] = Fi 1 /(F 2 0 + 1) = DX DY =-F 0 *DX Kontrola tan(beta-alfa) = T0 = T1/T2 Gdzie: T= DXPB DYPB DXPC DYPC Algorytm w języku C ROG=200.0/PI; // Ro[grad] dxab=xb-xa; dyab=yb-ya; // przyrosty AB dxac=xc-xa; dyac=yc-ya; // przyrosty AC al1=a1/rog; al2=a2/rog; // zamiana gradów na radiany ctga=1.0/(tan(al1)); // ctg(alfa) ctgb=1.0/(tan(al2)); // ctg(beta) f1=dxab-dyab*ctga; // f1 f2=dxab*ctga+dyab; // f2

F1=f1-dxac+dyac*ctgb; // F1 F2=f2-dxac*ctgb-dyac; // F2 dxp=(f1-f2*f0)/(f0*f0+1.0); dyp=-f0*dxp; // DY dyap=dyp; // DX x_p=xa+dxp; // X P y_p=ya+dyap; // Y P // DX Przykłady - dane Przykład 2 i rozwiązanie graficzne w AutoCAD

Specyfikacja problemu algorytmicznego Problem algorytmiczny: Obliczenie współrzędnych punktu wciętego wstecz Dane wejściowe: Dane: współrzędne 3 punktów: A, B, C oraz kąty α 1 i α 2. Dane wyjściowe: współrzędne punktu wcinanego P Zapis algorytmu w postaci listy kroków, pseudokod programu 1. Wyświetl pomoc - funkcja pomoc(); 2. Wykonuj pętlę do (przynajmniej raz) 3. Wyświetl menu: 0 - Wyjście z programu 1 - dane z klawiatury 2 - dane z pliku 'dwcwst.txt' - kąty w [grad] 3 - dane z pliku 'dwcwst2.txt' - kąty w [st min sek] 4. Wprowadź wskaźnik opcji dane1; 5. Jeśli dane1==1 to d_klaw() // dane z klawiatury else jeśli dane1==2 to d_plik() // dane z pliku - grady else jeśli dane1==3 d_plik2() // dane z pliku miara stopniowa else zwród 0 i wyjdź z programu; 6. Wyświetl wprowadzone dane: numery I współrzędne oraz kąty 7. Wywołaj funkcję dx_ap(), zwracającą przyrost DX oraz pośrednio przez referencję DY 8. Oblicz współrzędne punktu wcinanego P: xp=xa+dxap; yp=ya+dyap; 9. Wyświetl wyniki 10. Otwórz plik wyników i wydrukuj wyniki do pliku, zamknij plik } dopóki wskaźnik dane1 różny od zera // while (dane1!= 0); 11. Wród do punktu 2

SCHEMAT BLOKOWY PROGRAMU

Zapis funkcji głównej w języku C // definicja nazw plików wynikowych #define WYN3 "w_wcwstg.txt" #define WYN4 "w_wcwsts.txt" int main() char WYN[15]; pomoc(); // funkcja pomoc() do // petla do system("cls"); // menu cout << "Program wcwst.cpp" << endl; cout << "Wciecie katowe wstecz \n" << endl; cout << "0 - Wyjscie z programu \n" << endl; cout << "1 - dane z klawiatury \n" << endl; cout << "2 - dane z pliku 'dwcwst.txt' - katy w [grad] \n"; cout << "NrA x y NrB xb yb NrC xc yc Alfa1[grad] Alfa2[grad]\n " << endl; cout << "3 - dane z pliku 'dwcwst2.txt' - katy w [st min sek]\n"; cout << "NrA x y NrB xb yb NrC xc yc st1 min1 sek1 st2 min2 sek2 " << endl; cout << "\nwprowadz 0 lub 1 lub 2 lub 3 => " ; cin >> dane1; // wczytaj wskaznik rodzaju danych if (dane1==1) d_klaw(nra, nrb, nrc, xa, ya, xb, yb, xc, yc, a1, a2, nrp); // dane z klawiatury else if (dane1==2) d_plik(nra, nrb, nrc, xa, ya, xb, yb, xc, yc, a1, a2, nrp); // dane z pliku - grady else if (dane1==3) d_plik2(nra, nrb, nrc, xa, ya, xb, yb, xc, yc, a1, a2, nrp); // dane z pliku - stopnie else return 0; // wyjście z programu // wyświetlenie wyników cout << "Wprowadzone dane: " << endl; cout << "Pkt A: " << nra << "\t" << xa << "\t" << ya << endl; cout << "Pkt B: " << nrb << "\t" << xb << "\t" << yb << endl; cout << "Pkt C: " << nrc << "\t" << xc << "\t" << yc << endl; cout << "Afa1 Alfa 2: " << a1 << "\t" << a2 << endl; NE; // Naciśnij Enter getch(); } // Obliczenia przyrostow - funkcja zwraca bezposrednio dxap a przez referencje dyap } dxap= dx_ap(xa, ya, xb, yb, xc, yc, a1, a2, dyap); // wywołanie funkcji xp=xa+dxap; yp=ya+dyap; // Wspolrzedne Xp Yp // wyswietlenie wynikow cout << "\nwyniki: funkcja glowna\n"; cout << "Punkt wyznaczony: " << nrp << " xp=" << xp << "\t yp=" << yp << endl; // Zapis wynikow do pliku strcpy(wyn, WYN3); if (dane1==3) strcpy(wyn, WYN4); else strcpy(wyn, WYN3); ofstream wy(wyn); cout.setf(ios::fixed); // zapewnia ze precision() odnosi sie do miejsc po kropce

wy << "Wciecie wstecz\n\n"; wy << "Dane \n"; wy << "Nr \t X \t Y \n"; wy << nra << "\t" << xa << "\t" << ya << endl; wy << nrb << "\t" << xb << "\t" << yb << endl; wy << nrc << "\t" << xc << "\t" << yc << endl; wy << "Katy [grad] " ; if (dane1==3) wy << "(przeliczone ze stopni)"; wy << "\t" << a1 << "\t\t" << a2 << endl; wy << "\npunkt wyznaczony: " << nrp << "\t"; cout.precision(4); // precyzja wy << " X= " << xp << " Y= " << yp << endl; wy.close(); // zamkniecie pliku } cout << "\n\nwyniki w pliku " << WYN; NE; getch(); } while (dane1!= 0); // koniec petli do return 0; // zwraca poprawne wyjście z main() } // main Przykład 1 danych kąty w gradach - plik danych: dwcwst1.txt 52 7108.45 1117.78 // nra xa ya 69 6602.16 2491.31 // nrb xb yb 54 4696.21 1546.07 // nrc xc yc 55.48272 142.7139 // Alfa1 Alfa2 w [grad] 2 // nr punktu wyznaczanego C Przykład wyników 1 Wcięcie wstecz Dane Nr X Y 52 7108.45 1117.78 69 6602.16 2491.31 54 4696.21 1546.07 Kąty [grad] 55.4827 142.714 Punkt wyznaczony: 2 X= 5836.17 Y= 743.262 Przykład danych 2 kąty w stopniach min sekundach

52 7108.45 1117.78 69 6602.16 2491.31 54 4696.21 1546.07 49 56 04 128 26 33 2 Przykład wyników 2 Wcięcie wstecz Dane Nr X Y 52 7108.45 1117.78 69 6602.16 2491.31 54 4696.21 1546.07 Kąty [grad] (przeliczone ze stopni) 55.4827 142.714 Punkt wyznaczony: 2 X= 5836.17 Y= 743.262