Zad. 4: Rotacje 2D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Podobne dokumenty
Zad. 3: Rotacje 2D. Demonstracja przykładu problemu skończonej reprezentacji binarnej liczb

Zad. 5: Rotacje 3D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Zad. 6: Sterowanie robotem mobilnym

Zad. 3: Układ równań liniowych

Zad. 4: Rotacje 3D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Zad. 5: Sterowanie robotem mobilnym

Zad. 5: Sterowanie dronem

Zad. 7: Fabryka obiektów i singleton

Zad. 7: Sterowanie robotami mobilnymi w obecności przeszkód

Zad. 5: Układ równań liniowych liczb zespolonych

Laboratorium nr 4: Arytmetyka liczb zespolonych

Zad. 7: Sterowanie manipulatorem przypadek 3D

Laboratorium nr 5: Mnożenie wektorów i macierzy

Zad. 6: Sterowanie dronami w obecności przeszkód

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Zad. 4: Szablonu dla układu równań liniowych

Zadanie nr 2: Arytmetyka liczb zespolonych

Układ równań liniowych

Zadanie 2: Arytmetyka symboli

Zad. 10: Sterowanie manipulatorem cz. 2 i 3

Zad. 1: Sterowanie mimika

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

Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN

Lab 9 Podstawy Programowania

Przekształcenia liniowe

R n = {(x 1, x 2,..., x n ): x i R, i {1,2,...,n} },

Ćwiczenie 25 Działania matematyczne we Flashu

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

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

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Języki i techniki programowania Ćwiczenia 2

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

1 Moduł Inteligentnego Głośnika

Co to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem.

Elementy animacji sterowanie manipulatorem

REFERAT O PRACY DYPLOMOWEJ

PROJEKT CZĘŚCIOWO FINANSOWANY PRZEZ UNIĘ EUROPEJSKĄ. Opis działania raportów w ClearQuest

1 Moduł Inteligentnego Głośnika 3

PRZEWODNIK PO ETRADER ROZDZIAŁ XII. ALERTY SPIS TREŚCI

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

Obraz jako funkcja Przekształcenia geometryczne

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

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

Informatyka I Lab 06, r.a. 2011/2012 prow. Sławomir Czarnecki. Zadania na laboratorium nr. 6

Programowanie obiektowe

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

Rys.2.1. Drzewo modelu DOM [1]

Kurs walut. Specyfikacja projektu. Marek Zając

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Moduł Handlowo-Magazynowy Przeprowadzanie inwentaryzacji z użyciem kolektorów danych

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Pomorski Czarodziej 2016 Zadania. Kategoria C

[ A i ' ]=[ D ][ A i ] (2.3)

Lista zgłoszeń zrealizowanych w uaktualnieniach Hot Fix w wersji

Programowanie obiektowe

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

Laboratorium nr 1. i 2.

Jednolity Plik Kontrolny w IFK

Skrypt 19. Trygonometria: Opracowanie L3

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

Dział I FUNKCJE TRYGONOMETRYCZNE

Utworzenie pliku. Dowiesz się:

P2.2 Wykaz zmian w oprogramowaniu aplikacyjnym WUP-Viator w wersji

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

TEMAT : KLASY DZIEDZICZENIE

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

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC.

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH

1. PODSTAWY TEORETYCZNE

Podstawy i języki programowania

Cyfrowe Przetwarzanie Obrazów i Sygnałów

zajęcia 2 Definiowanie wektorów:

9.5 Rozliczanie zaopatrzenia w przedmioty ortopedyczne i środki pomocnicze

Języki i metody programowania Java Lab2 podejście obiektowe

Style programowania - krótki przeglad

Rzutowanie z 4D na 3D

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Podstawy działań na wektorach - dodawanie

Informacja o przestrzeniach Sobolewa

1. Wybierz polecenie rysowania linii, np. poprzez kliknięcie ikony W wierszu poleceń pojawi się pytanie o punkt początkowy rysowanej linii:

Kryteria oceniania z zakresu klasy pierwszej opracowane w oparciu o program Matematyki z plusem dla Gimnazjum

OCENIANIE ARKUSZA POZIOM PODSTAWOWY

Program powinien otworzyć się z pierwszym formularzem. Jeśli nie, otwórz pierwszy formularz, wybierając go z listy - Shift+F12.

ELEKTRONICZNA KSIĄŻKA ZDARZEŃ

Spis treści. Rozdział 1. Aplikacje konsoli w stylu ANSI C i podstawowe operacje w Visual C

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

Aplikacja npodpis do obsługi certyfikatu

WEKTORY I WARTOŚCI WŁASNE MACIERZY. = λ c (*) problem przybliżonego rozwiązania zagadnienia własnego dla operatorów w mechanice kwantowej

5. Rozwiązywanie układów równań liniowych

Ćwiczenie 3. MatLab: Algebra liniowa. Rozwiązywanie układów liniowych

Transkrypt:

Zad. 4: Rotacje 2D 1 Cel ćwiczenia Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich struktur danych w zależności od metody rozwiązywania problemu. Praktyczne zapoznanie się z problemem skończonej binarnej reprezentacji liczb oraz wynikającego stąd problemu niedokładności obliczeń. 2 Program zajęć Demonstracja przykładu problemu skończonej reprezentacji binarnej liczb Ocena realizacji zadania z poprzedniego laboratorium ocenie podlega poprawność realizacji zadania, styl pisania programu oraz opisy. Ocena przygotowania do zajęć ocenie podlega diagram czynności (szczegóły wymagań patrz podrozdział 4) Modyfikacja programu wg wskazań osoby prowadzacej ocenie będzie podlegała poprawność realizacji modyfikacji. Pracę nad modyfikacją programu (wszystkie operacje należy wykonywać na kopii) należy rozpocząć już w trakcie pierwszej fazy laboratorium, gdyż prowadzący nie będzie w stanie ocenić wcześniejszego programu wszystkim jednocześnie. Realizacja wstępnej fazy prac nad nowym zadaniem w ramach wstępnej realizacji zadania należy zdefiniować klasę wektor oraz przeciążenia odpowiednich metod. Definicję należy wpisać w odpowiednim module dostarczonego zalążka. Ocena realizacji wstępnej fazy zadania 3 Opis zadania programowego Należy napisać program, który umożliwi rotację prostokąta o zadany kąt wokół środka układu współrzędnych. Po dokonanym obrocie współrzędne wierzchołków powinny zostać zaktualizowane, aby odzwierciedlały nowe położenie prostokąta. Program ma udostępniać proste menu, które pozwalać ma na następujące operacje: obrót prostokąta o zadany kąt z zadaną ilością powtórzeń operacji, przesunięcie prostokąta o zadany wektor, wyświetlenie współrzędnych wierzchołków, sprawdzenie długości przeciwległych boków, wyświetlenie menu, zakończenie działania programu. Sprawdzenie długości przeciwległych boków ma na celu sprawdzenie, czy długość przeciwległych boków jest równa. Oprócz wspomnianych operacji program powinien wizualizować położenie prostokąta wykorzystując dostarczony moduł LaczeDoGnuplota. 1

4 Przygotowanie do zajęć Należy przygotować diagram czynności dla operacji obrotu prostokąta o zadany kąt wokół środka układu współrzędnych. 5 Przykład działania programu Poniżej przedstawiony przykład wyznacza formę komunikatów i ich forma jest obligatoryjny dla programu tworzonego w ramach niniejszego zadania. panamint>./program_obroty_2d o - obrot prostokata o zadany kat p - przesuniecie prostokata o zadany wektor w - wyswietlenie wspolrzednych wierzcholkow s - sprawdzenie dlugosci przeciwleglych bokow m - wyswietl menu k - koniec dzialania programu Twoj wybor? (m - menu) > w 1.0000000000 1.0000000000 11.0000000000 1.0000000000 11.0000000000 6.0000000000 1.0000000000 6.0000000000 Twoj wybor? (m - menu) > s :) Dluzsze przeciwlegle boki sa sobie rowne. :) Krotsze przeciwlegle boki sa sobie rowne. Twoj wybor? (m - menu) > p Wprowadz wspolrzedne wektora translacji w postaci dwoch liczb tzn. wspolrzednej x oraz wspolrzednej y. 1 1 Twoj wybor? (m - menu) > w 2.0000000000 2.0000000000 12.0000000000 2.0000000000 12.0000000000 7.0000000000 2.0000000000 7.0000000000 Twoj wybor? (m - menu) > o Podaj wartosc kata obrotu w stopniach 1 Ile razy operacja obrotu ma byc powtorzona? 2

3600000 Twoj wybor? (m - menu) > w 2.1170041561 2.1025645733 12.6662225723 2.0672414303 12.6843624115 7.3417510986 2.1351695061 7.3789219856 Twoj wybor? (m - menu) > s :O Dluzsze przeciwlegle boki nie sa rowne!!! :O Krotsze przeciwlegle boki nie sa rowne!!! Twoj wybor? (m - menu) > k Koniec dzialania program panamint> _ W przykładzie zademonstrowano kumulowanie się błędu obliczeń. Bardzo wyraźne i widoczne zniekształcenia pierwotnego prostokąta są widoczne przy zadaniu kąta rotacji 1 i powtórzenia tej operacji 36 000 000 razy. Porównanie obu prostokątów (pierwotnego i po zrealizowaniu ciągu transformacji) widoczny jest na rys. 1 a) b) Rysunek 1: Zestawienie prostokątów a) przed dokonaniem ciągu rotacji, b) po dokonaniu ciągu rotacji o 1 i powtórzenia jej 36 000 000 razy 6 Realizacja rotacji Niech będzie dany punkt P = (x,y). Dokonując rotacji tego punktu o kąt α wokół środka układu współrzędnych otrzymujemy nowy punkt P = (x,y ) tak jak to jest pokazane na rysunku rys. 2. Transformację rotacji współrzędnych punktu P do współrzędnych punktu P realizujemy 3

Rysunek 2: Rotacja punktu P o kąt α zgodnie z następującym wzorem: x = xcosα ysinα, y = xsinα + ycosα. Możemy go zapisać w postaci macierzowej [ ] [ x cosα sinα y = sinα cosα ][ x y ] Tak więc mając na uwadze, że P = (x,y) i P = (x,y ) oraz oznaczając macierz rotacji R α, powyższą wzór można zapisać w formie P = R α P. W programie należy dokonać odpowiednich przeciążeń operatorów, aby tego typu zapis można było stosować bezpośrednio w programie. 7 Materiały pomocnicze Zalążek programu znajduje się w katalogu bk/edu/kpo/zad/z4. Zawiera on przykład wykorzystania modułu złącza do programu gnuplot, który pozwala zwizualizować wyniki obliczeń. Podstawowe objaśnienia znajdują się w kodzie dostarczonego zalążka. 8 Wymagania co do konstrukcji programu Oprócz wymagań sformułowanych w opisie zadania należy uwzględnić uwarunkowania przedstawione poniżej. Należy zdefiniować klasy Wektor2D, Macierz2x2 oraz Prostokat. Muszą one mieć tylko i wyłacznie niezbędne pola reprezentujace atrybuty danego pojęcia. Należy odpowiednio przeciążyć operator indeksujący dla klasy Wektor2D, operator funkcyjny dla klasy Macierz2x2 i odpowiednio posługiwać się nimi w programie. Możliwe są również również inne kombinacje tych operatorów. 4

Należy przeciążyć operator mnożenia, tak aby była możliwość przemnożenia macierzy przez wektor. Ponadto konieczne jest przeciążenie operatora dodawania i odejmowania wektorów. Program musi zachować strukturę modułową i odpowiednią strukturę kartotek. O ile będzie to konieczne, należy zmodyfikować plik Makefile (np. gdy dodany zostanie nowy moduł). Każda z klas powinna zostać zdefiniowana w oddzielnym pliku nagłówkowym. Metody tej klasy powinny być natomiast definiowane w osobnym module związanym z daną klasą, np. definicja klasy Prostokat powinna znaleźć się w pliku nagłówkowym Prostokat.hh, zaś metody w pliku Prostokat.cpp. Proste metody można definiować bezpośrednio w ciele klasy. Dla poszczególnych klas należy przeciążyć niezbędne operatory działające na strumieniach. Nie wszystkie przeciążenia są w tym zadaniu potrzebne. Na pewno będą potrzebne przeciążenia operatorów wczytywania i zapisu dla klasy Wektor2D oraz operatora wyświetlania dla klasy Prostokat. Wszystkie metody, które nie zmieniają stanu obiektu, na którym działają, powinny być metodami typu const. Wszystkie klasy i metody oraz funkcje powinny zostać opisane zgodnie z zaleceniami przedstawionymi w pliku bk/edu/kpo/zalecenia.txt. Dla końcowej wersji programu powinna zostać wygenerowana w formacie HTML za pomocą systemu doxygen. Oprócz tego pozostają w mocy wszystkie wcześniejsze wymagania dotyczące struktury katalogów, pliku Makefile, modułowej struktury programu, jak też opisów. 9 Wymagania i zarys programu zajęć w okresie realizacji zadania Przystępując do pracy nad programem należy pamiętać, że menu programu dodajemy na samym końcu, gdy stworzymy już i przetestujemy wszystkie niezbędne funkcjonalności. Zaczynanie pracy od menu nie jest dobrym rozwiązaniem. 9.1 Tydzień 0 Należy przygotować diagram czynności dla operacji obrotu prostokąta o zadany kąt wokół środka układu współrzędnych. 9.2 Tydzień 1 Przed zajęciami muszą zostać przygotowane następujące elementy zadania. Wszystko co będzie ponad to będzie oceniane in plus (oprócz menu programu). Zakłada się, że w programie będą przetestowane podstawowe funkcjonalności związane z obrotem i translacją prostokąta. W 5

tej wersji programu nie jest pożądane, aby występowało menu. Wyjątkiem jest sytuacja, gdy program zostanie wcześniej skończony. Zdefiniowane powinny być klasy Wektor2D, Macierz2x2 oraz Prostokat. Wszystkie klasy muszą mieć zdefiniowane odpowiednie metody. Warunkiem koniecznym pozytywnej oceny jest poprawna kompilacja. W trakcie kompilacji nie powinny być generowane żadne ostrzeżenia. W funkcji main powinien być kod, który demonstruje rysowanie prostokąta, jego obrót o zadany kąt. Wartość tego kąta może być (a w celach testowych nawet należy aby była) wpisana na sztywno w kodzie programu. Po dokonaniu obrotu powinien pojawić się nowy rysunek. W analogiczny sposób powinna zostać zademonstrowana operacja translacji. Uwaga: W tej wersji programu nie musi być menu. Powinny być wyświetlane współrzędne wierzchołków prostokąta. Muszą więc zostać przeciążone odpowiednie operatory dla klas Wektor2D i Prostokat, które umożliwią wypisanie współrzędnych na wyjście standardowe. Wszystkie klasy i metody muszą być opisane. W trakcie zajęć zostanie zademonstrowana praca z systemem doxygen. Trzeba będzie odpowiednio zmodyfikować opisy, tak aby były rozumiane i właściwie przetworzone przez system doxygen. 9.3 Tydzień 2 Rozliczenie się z gotowego programu i rozpoczęcie następnego zadania. 6