Wcięcie liniowe
Transkrypt
Wcięcie liniowe
Wcięcie liniowe Zasada wcięcia liniowego Wcięcie liniowe polega na określeniu współrzędnych punktu wcinanego C, na podstawie dwu odległości pomierzonych miedzy wyznaczanym punktem C a dwoma znanymi punktami A i B. Konstrukcję wcięcia liniowego stanowi trójkąt o podstawie utworzonej przez punkty A i B o znanych współrzędnych, wierzchołkiem jest Punt wyznaczany C, a ramionami są boki wcinające |BC| = a i |AC|=b. 1 Obliczenie wcięcia liniowego można zrealizowad przez zamianę na wcięcie kątowe w przód. Po obliczeniu ze współrzędnych długości |AB| = c, można wyznaczyd kąty Alfa i Beta oraz Gamma z twierdzenia Carnota (cosinusów), na podstawie znanych długości boków a, b, c. cos(Alfa) = (b*b + c*c - a*a)/(2*b*c) = cA/(2*b*c) cos(Beta) = (a*a + c*c - b*b) /(2*a*c) = cB/(2*a*c) cos(Gamma) = (b*b + c*c - a*a) /(2*a*b) = cB/(2*a*b) Kontrola: Alfa + Beta + Gamma = 200[grad] 2 Wygodnym sposobem rozwiązania wcięcia liniowego jest zastosowanie pomocniczych symboli rachunkowych prof. Hausbrandta Kontrola: obliczenie boków ze współrzędnych oraz ewentualnie kątów i ich sumy Objaśnienia: cA, cB, cC – carnotiany F(1) – Funkcja względna prosta pierwsza: F(1) = F1/(Suma elementów dolnych) F(2) – Funkcja względna prosta druga: F(2) = F2/(Suma elementów dolnych) F1 – funkcja pierwsza, inaczej iloczyn wyznacznikowy F2 – funkcja druga, inaczej iloczyn kolumnowy F = |a1 b1|a2 b2| |c1 d1|c2 d2| F1=a1*d1-b1*c1+a2+d2-b2*c2 F2=a1*c1+b1*d1+a2*c2+b2*d2 4P = 4*Pole trójkąta Specyfikacja problemu algorytmicznego: Problem algorytmiczny: Obliczenie współrzędnych punktu C: Xc, yC Dane wejściowe: Numery punktów A i B – liczby całkowite long oraz ich współrzędne i długości boków a, b – liczby rzeczywiste podwójne precyzji. Pseudokod – algorytm w postaci listy kroków – funkcja główna 1. 2. 3. 4. 5. 6. 7. Otwarcie pliku wyników i wydruk nagłówka, szkicu, wzorów Wyświetlenie nagłówka programu, szkicu, oznaczeo Wprowadzenie danych: numery i współrzędne punktów danych A, B, numer punktu wyznaczanego C, odległości pomierzone a i b Obliczenia: carnotiany, 4P, współrzędne punktu C, obliczenia kontrolne: boki ze współrzędnych i kąty Wyświetlenie wyników i zapis do pliku wyników Pytanie czy koniec obliczeo – jeśli wybór kont==1 to przejdź do kroku 2, w przeciwnym przypadku – koniec obliczeo Zamknięcie pliku wyników i wyjście z programu. SCHEMAT BLOKOWY PROGRAMU START Otwarcie pliku wyników Wydruk do pliku nagłówka programu, szkicu, oznaczeo Wyświetlenie nagłówka programu, szkicu, oznaczeo Wprowadzenie danych: numery i współrzędne punktów danych A, B, numer punktu wyznaczanego C, odległości pomierzone a i b Obliczenia: carnotiany, 4P, współrzędne punktu C, obliczenia kontrolne: boki ze współrzędnych i kąty Wyświetlenie wyników i zapis do pliku wyników Wczytaj opcję czy kontynuacja obliczeo: 1 -tak T Kont==1 N Zamknięcie pliku wyników i wyjście z programu STOP Dodatkowa funkcja - obliczenie odległości ze współrzędnych double odl(double x1, double y1, double x2, double y2) Przykład obliczeń Program wclin2.cpp Wcięcie liniowe: dane współrzędne punktów A, B oraz boki a i b, wyznaczany punkt C Oznaczenia: punkt lewy B, punkt prawy A. Pomierzone boki: lewy: a = |BC|, prawy b = |AC| Szkic do obliczeń C - punkt wyznaczany / \ a b / \ B --(c)- A Do obliczeń zastosowano wzory prof. Hausbrandta, w postaci symboli rachunkowych F = |xA yA | xB yB| |-4P cB | 4P cA| xC = F(1) yC=F(2) cA=b*b+c*c-a*a; cB=a^2+c^2-b^2; cC=a^2+b^2-c^2, gdzie np. a^2 = a*a 4P = sqrt(cA*cB+cA*cC +cC*cA) Kontrola: Długości boków a i b ze współrzędnych Katy: tan(Alfa) = 4P/cA; tan(Beta) = 4P/cB; tan(Gamma) = 4P/cC Alfa - kat w punkcie A: Alfa = <(B,A,C), Beta = <(C,B,A), Gamma = <(A,C,B) Obliczenia Obliczenie 1 Punkt prawy A: 1 x = 0 y = 4 Punkt lewy B: 2 x = 0 y = 0 a = |BC| = 3 b = |AC| = 5 Obliczone c = |AB| = 4 Wyznaczony punkt 3 : xC = 3 yC= 0 Obliczenia kontrolne Bok pomierzony a = 3 obliczony = 3 Bok pomierzony b = 5 obliczony = 5 Katy [grad] Alfa = 40.9666 Beta = 100 Gamma = 59.0334 Suma kątów = 200