Zad. 8: Manipulator 3D – przeszukiwanie zbioru obiektów

Transkrypt

Zad. 8: Manipulator 3D – przeszukiwanie zbioru obiektów
Zad. 8: Manipulator 3D – przeszukiwanie zbioru
obiektów niejednorodnych1
1
Cel ćwiczenia
Wykorzystanie w praktyce mechanizmu rzutowania w gór˛e w połaczeniu
˛
z metodami wirtualnymi. Wykształcenie umiej˛etności korzystania z szablonu std::map<>.
2
Opis zadania programowego
Niniejsze zadanie jest kontynuacja˛ i rozszerzeniem wcześniejszego zadania. Bazujac
˛ na programie zrealizowanym w ramach poprzedniego zadania należy wprowadzić struktur˛e pojedynczej kolekcji obiektów w oparciu o szablon std::map<>. Powinien on ujednolicić dotychczasowa˛ operacj˛e szukania obiektu w oparciu o nazw˛e. Realizacja tej operacji powinna być
wykonana tylko i wyłacznie
˛
w zbiorze obiektów, który ma być reprezentowany przez odpowiednia˛ instancj˛e szablonu std::map<>. Obiekt zawierajacy
˛ std::map<> musi być polem w
klasie Scena. Aby wykonać odpowiednie akcje dla znalezionego obiektu geometrycznego (tj.
wczytanie pliku, który zawiera opis postury, w przypadku robotów, lub wektor translacji w
przypadku wielościanów) należy wykorzystać mechanizm metod wirtualnych. Mechanizm ten
należy również wykorzystać w przypadku aktualizacji stanu danego obiektu geometrycznego,
tzn. w przypadku manipulatorów, odnosi si˛e to do wyznaczenia nowej postury, zaś w przypadku
wielościanów, aktualizacja stanu oznacza wyznaczenie jego nowego położenie.
Oddzielna˛ operacja˛ powinna być operacja zapisu aktualnego stanu obiektów do plików, w
celu ich odrysowania przez program gnuplot. Powinna ona zostać również zrealizowana z
wykorzystaniem mechanizmu metoda wirtualnych.
3
Reakcja na bł˛edy
Jeżeli zostanie stwierdzony bład
˛ w trakcie interpretacji plików konfiguracyjnych, to należy
zgłosić stosowna˛ informacj˛e i przerwać działanie programu. Jeżeli natomiast nie zostanie znaleziony obiekt, którego ma dotyczyć akcja, lub opis akcji zawiera bład,
˛ to należy zgłosić stosowny
komunikat. Program jednak nie powinien przerywać swojego działania. Powinien przejść do
realizacji operacji dla nast˛epnego obiektu geometrycznego.
4
Wersje rozszerzeń
4.1
Rozszerzenie podstawowe
W wersji rozszerzonej zakłada si˛e, że manipulatorów może być również dowolna ilość. Wszystkie obiekty geometryczne, takie jak manipulatory i wielościany (tzn. prostopadłościany i parawany), majac
˛ być dost˛epne tylko i wyłacznie
˛
poprzez jeden kontener stworzony na bazie sza1 Niniejsze
zadanie nie jest obligatoryjne. Niemniej w przypadku osób pragnacych
˛
otrzymać ocen˛e 5, 0 lub
podnieść dotychczasowa˛ ocen˛e, realizacja tego zadania jest niezb˛edna. W przypadku osób starajacych
˛
si˛e o ocen˛e
celujac
˛ a,˛ należy zrealizować je w wersji rozszerzonej (co najmniej rozszerzenie podstawowe).
1
blonu std::map<>. W konstrukcji tej należy wykorzystać mechanizm rzutowania w gór˛e. Należy zwrócić uwag˛e, aby w momencie zakończenia przez program swojego działania, wszystkie
obiekty tworzone dynamicznie zostały podane destrukcji.
Program ma zostać uruchomiony z nazwami dwóch plików, tak jak to jest przedstawione
poniżej.
./program
konfig.dat
scenariusz_dzialania.dat
Pierwszy z nich ma zawierać list˛e nazw plików, które we wcześniejszej wersji zadania były
podawane w linii polecenia. Przykładowa zawartość pliku konfig.dat:
konfig_manip1_rot.dat
konfig_manip2_trans.dat
obiekt1.dat
konfig_manip3_trans.dat
obiekt2.dat
obiekt3.dat
konfig_manip4_rot.dat
obiekt4.dat
Plik scenariusz_dzialania.dat zawiera list˛e składajac
˛ a˛ si˛e z nazwy obiektu, do którego ma
być zastosowane określone działanie, oraz z nazwy pliku, w którym opisane jest dane działanie.
W przypadku manipulatorów działaniem tym jest nowa konfiguracja, zaś w przypadku prostopadłościanów i parawanów, operacja przesuni˛ecia ich na scenie. Przykładowa zawartość pliku
scenariusz_dzialania.dat.
manipulator1_trans
manipulator1_trans
prostopadloscian_1
prostopadloscian_1
manipulator2_trans
postura1_manip1_trans.dat
postura2_manip1_trans.dat
prost1_pozycja1.dat
prost1_pozycja2.dat
postura1_manip2_trans.dat
Pliki opisujace
˛ wspomniane działania maja˛ taki sam format jak w zadaniu poprzednim. Wprowadzony zestaw operacji umożliwia stworzenia scenariusza działań, które może zainscenizować prac˛e robotów na linii produkcyjnej.
4.2
Rozszerzenie pomocnicze
Dalszym rozszerzeniem realizacji zadania jest wprowadzenie płynnej zmiany postury manipulatorów, jak też pozycji przemieszczajacych
˛
si˛e obiektów.
2

Podobne dokumenty