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

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

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

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

Zad. 6: Sterowanie robotem mobilnym

Zad. 5: Sterowanie robotem mobilnym

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

Zad. 5: Sterowanie dronem

Zad. 7: Fabryka obiektów i singleton

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

Zad. 7: Fabryka obiektów i singleton

Zad. 6: 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

Zadanie nr 3: Sprawdzanie testu z arytmetyki

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

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

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

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

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

Języki i techniki programowania Ćwiczenia 2

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

Lab 9 Podstawy Programowania

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

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

Przekształcenia liniowe

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

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

Obraz jako funkcja Przekształcenia geometryczne

Programowanie i techniki algorytmiczne

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?

Podstawy i języki programowania

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

Ćwiczenie 25 Działania matematyczne we Flashu

Wstęp do informatyki- wykład 2

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

OCENIANIE ARKUSZA POZIOM PODSTAWOWY

Utworzenie pliku. Dowiesz się:

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

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

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

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

Język ludzki kod maszynowy

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

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

Programowanie obiektowe

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

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

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

PAMIĘĆ RAM. Rysunek 1. Blokowy schemat pamięci

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

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

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

Pomorski Czarodziej 2016 Zadania. Kategoria C

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

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

Deklaracja i definicja metod, zwracanie wartości z metod, przekazywania parametrów do metod

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

zajęcia 2 Definiowanie wektorów:

Programowanie obiektowe

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

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

Elementy animacji sterowanie manipulatorem

Style programowania - krótki przeglad

Skrypt 19. Trygonometria: Opracowanie L3

Analiza numeryczna Lista nr 3 (ćwiczenia) x x 2 n x.

Wybrane wyniki w zakresie umiejętności matematycznych

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

Manipulator OOO z systemem wizyjnym

Dział I FUNKCJE TRYGONOMETRYCZNE

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

TEMAT : KLASY DZIEDZICZENIE

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

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

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

Rys.2.1. Drzewo modelu DOM [1]

Programowanie obiektowe

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Kurs walut. Specyfikacja projektu. Marek Zając

Podstawy Programowania

Algorytm. a programowanie -

Dia rysowanie diagramów

Ćw. I Projektowanie opakowań transportowych cz. 1 Ćwiczenia z Corel DRAW

WYMAGANIA na poszczególne oceny-klasa I Gimnazjum

Styczeń wzoru 6.10a i 6.10b, zadawać współczynniki. współczynniki redukcyjne dla obciążeń

Zapisywanie algorytmów w języku programowania

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej

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

1. PODSTAWY TEORETYCZNE

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

1 Moduł Inteligentnego Głośnika

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej

Transkrypt:

Zad. 3: 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ęć w tygodniu zerowym 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 schemat blokowy algorytmu (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, po tej operacji należy porównać długość przeciwległych boków, wyświetlić ich wartości oraz wynik porównania, przesunięcie prostokąta o zadany wektor, wyświetlenie współrzędnych wierzchołków, wyświetlenie menu, zakończenie działania programu. 1

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. 4 Przygotowanie do zajęć Należy przygotować schemat blokowy algorytmu 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 :) Dluzsze przeciwlegle boki sa sobie rowne. Dlugosc pierwszego boku: 10.00000000000000000000 Dlugosc drugiego boku: 10.00000000000000000000 :) Krotsze przeciwlegle boki sa sobie rowne. Dlugosc pierwszego boku: 5.00000000000000000000 Dlugosc drugiego boku: 5.00000000000000000000 o - obrot prostokata o zadany kat p - przesuniecie prostokata o zadany wektor w - wyswietlenie wspolrzednych wierzcholkow 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) > p Wprowadz wspolrzedne wektora translacji w postaci dwoch liczb tzn. wspolrzednej x oraz wspolrzednej y. 1 2 Twoj wybor? (m - menu) > w 2.0000000000 3.0000000000 12.0000000000 3.0000000000 12.0000000000 8.0000000000 2

2.0000000000 8.0000000000 Twoj wybor? (m - menu) > o Podaj wartosc kata obrotu w stopniach 1 Ile razy operacja obrotu ma byc powtorzona? 3600000 :O Dluzsze przeciwlegle boki nie sa rowne!!! Dlugosc pierwszego boku: 10.53612009518476710923 Dlugosc drugiego boku: 10.65055627937144855366 :O Krotsze przeciwlegle boki nie sa rowne!!! Dlugosc pierwszego boku: 5.27226513299249432976 Dlugosc drugiego boku: 4.94654539146407223882 Twoj wybor? (m - menu) > w 2.1186568737 3.1550147533 12.6547117233 3.1178891659 12.6788005829 8.3900995255 2.0321741104 8.1008043289 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 3

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 zgodnie z następującym wzorem: Rysunek 2: Rotacja punktu P o kąt α 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/z3. 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. 4

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. 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. 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ą 5

przetestowane podstawowe funkcjonalności związane z obrotem i translacją prostokąta. W 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. 9.3 Tydzień 2 Rozliczenie się z gotowego programu i rozpoczęcie następnego zadania. 6