Systemy wirtualnej rzeczywistości. Sterowanie i wykrywanie kolizji
|
|
- Roman Sikora
- 7 lat temu
- Przeglądów:
Transkrypt
1 Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Sterowanie i wykrywanie kolizji Wstęp: W czwartej części przedstawione zostaną mechanizmy obsługi urządzeń wejściowych w XNA. Zrealizowane zostanie sterowanie czołgiem. Zostaną również omówione i zaimplementowane techniki wykrywania kolizji gracza z terenem i przeszkodami. 1. Sterowanie czołgiem Pisanie obsługi sterowania zaczniemy od obracania korpusu i wieżyczki. Przechodzimy do metody UpDate klasy Gracz. Przede wszystkim musimy pobrać informacje o stanie klawiatury. Obiektem reprezentującym klawiaturę jest Keyboard, a informacje o aktualnym jej stanie zwraca metoda GetState w formie obiektu typu KeyboardState: KeyboardState klawiatura = Keyboard.GetState(); Teraz możemy sprawdzić czy został naciśnięty dany klawisz i zmienić odpowiednio rotacje korpusu i wieżyczki. Ponieważ metoda UpDate może być wywoływana z różną częstotliwością prędkość obracania uzależniamy od czasu jaki miną od poprzedniego zaktualizowania. Z pomocą przychodzi nam parametr wejściowy metody UpDate. Jest to zmienna typu GameTime, która zawiera wiele przydatnych informacji na temat czasu gry. Nas interesuje czas od ostatniego wywołania metody UpDate w milisekundach. Dodatkowo regulujemy prędkość obrotu mnożąc czas razy współczynnik prędkości. // korpus if (klawiatura.iskeydown(keys.a)) rotacjakorpusu += gametime.elapsedgametime.milliseconds * f; if (klawiatura.iskeydown(keys.d)) rotacjakorpusu -= gametime.elapsedgametime.milliseconds * f; 1
2 // wiezyczka if (klawiatura.iskeydown(keys.left)) rotacjawiezyczki += gametime.elapsedgametime.milliseconds * 0.004f; if (klawiatura.iskeydown(keys.right)) rotacjawiezyczki -= gametime.elapsedgametime.milliseconds * 0.004f; Jeśli teraz skompilujemy naszą grę będziemy już mogli kontrolować obrót korpusu i wieżyczki czołgu. Przyszła kolej na poruszanie się do przodu i do tyłu. Ponieważ w dalszej części dodamy obsługę kolizji z innymi obiektami na scenie dla uproszczenia umieścimy kod poruszania się czołgu w metodzie UpDate klasy głównej, a nie klasy Gracz. Zaczynamy od pobrania stanu klawiatury: KeyboardState klawiatura = Keyboard.GetState(); Następnie sprawdzamy czy został wciśnięty odpowiedni klawisz: if (klawiatura.iskeydown(keys.w) klawiatura.iskeydown(keys.s)) Zmianę pozycji czołgu uzyskamy dodając do wektora pozycji odpowiedni wektor przesunięcia. Aby go wyznaczyć musimy najpierw ustalić jego kierunek. Chcielibyśmy aby nasz czołg poruszał się do przodu lub do tyły. Obliczamy zatem macierz obrotu korpusu, a następnie wykorzystujemy ją do obrócenia wektora [0.0, 0.0, -1.0] (wektor ten reprezentuje przód czołgu bez uwzględnienia rotacji, jest dostępny jako stała Vector3.Forward). Efektem będzie wektor znormalizowany (o długości 1) skierowany w stronę, w którą zwrócony jest czołg. Vector3 kierunek = Vector3.Transform(Vector3.Forward, Matrix.CreateRotationY(gracz.Rotacja)); Skoro wiemy już po jakiej linii będzie poruszał się gracz wystarczy przesunąć go wzdłuż tej linii w przód lub w tył o odpowiednią ilość jednostek. Ponownie wykorzystamy czas, który minął od ostatniej aktualizacji oraz pewien współczynnik szybkości. Nasz odwrócony wektor mnożymy razy otrzymany skalar i aktualizujemy pozycję gracza. kierunek *= gametime.elapsedgametime.milliseconds * 0.008f; Vector3 nowapozycja = gracz.pozycja; if (klawiatura.iskeydown(keys.w)) 2
3 nowapozycja += kierunek; if (klawiatura.iskeydown(keys.s)) nowapozycja -= kierunek; gracz.pozycja = nowapozycja; 2. Śledzenie czołgu Chcielibyśmy żeby nasza kamera śledziła czołg gdy będziemy nim poruszać. Dlatego po obliczeniu nowej pozycji gracza uaktualniamy również cel kamery: kamera.cel = nowapozycja; 3. Kolizje Zagadnienie kolizji w grach komputerowych jest bardzo szerokie i zostanie przedstawione jedynie w podstawowym zakresie. Jest wiele metod wykrywania kolizji miedzy obiektami ale wszystkie sprowadzają się do określenia czy dane dwa obiekty się przenikają (np. gracz nie może przejść przez ścianę). Dokładne algorytmy sprawdzania kolizji bazują na analizie wzajemnego położenia poszczególnych trójkątów siatek badanych obiektów (w przypadku bardzo dynamicznych symulacji stosuje się również analizę trajektorii obiektów). Takie dokładne sprawdzanie wymaga oczywiście stosunkowo dużych nakładów obliczeniowych. Należy pamiętać, że z reguły te obliczenia wykonuje się w każdej klatce symulacji. Zakładając, że na scenie jest wiele skomplikowanych obiektów, a sprawdzenie kolizji należy przeprowadzić dla każdej możliwej pary tych obiektów, wymagane jest stosowanie technik optymalizacji. Jedną z nich jest uproszczenie skomplikowanych siatek do postaci prostych brył (np. sześcian, kula), dla których obliczenie kolizji jest proste i szybkie. Dopiero jak nastąpi kolizja dla brył uproszczonych stosuje się dokładniejsze algorytmy w celu weryfikacji. Właśnie takie uproszczone sprawdzanie wykorzystamy w tworzonej aplikacji. XNA posiada podstawowe mechanizmy sprawdzania kolizji opisaną wyżej metodą. Siatkę można opisać sześcianem lub kulą, a klasy reprezentujące te bryły to odpowiednio BoundingBox i BoundingSphere. 3.1 Ograniczenie poruszania sie do terenu Najpierw zajmiemy się ograniczeniem obszaru poruszania się do wygenerowanego terenu. Nasz teren jest kwadratem zatem idealnym sposobem reprezentacji przestrzeni, po której może poruszać się gracz, będzie prostopadłościan. Dodajemy więc zmienną typu BoundingBox do klasy Teren: BoundingBox szescian; 3
4 Inicjujemy ją w konstruktorze: szescian = new BoundingBox(new Vector3(-rozmiar, -rozmiar, -rozmiar), new Vector3(rozmiar, rozmiar, rozmiar)); Na koniec udostępnimy ją poprzez właściwość: public BoundingBox Szescian get return szescian; Teraz potrzebna nam jeszcze bryła opisująca czołg. Jego kształt jest bardziej nieregularny i możemy nim obracać więc do jego reprezentacji użyjemy kuli. Przechodzimy do klasy gracza i deklarujemy zmienną: BoundingSphere sfera; Podobnie jak w przypadku terenu inicjujemy ją w konstruktorze. Każda siatka w modelu ma już swoją kulę stworzoną na podstawie wierzchołków. Do reprezentacji naszego czołgu wykorzystamy sferę korpusu i odpowiednio ją przeskalujemy: sfera = new BoundingSphere(); sfera = model.meshes["korpus"].boundingsphere; sfera = sfera.transform(matrix.createscale(2.0f * rozmiar)); Na koniec udostępniamy ją poprzez właściwość: public BoundingSphere Sfera get return sfera; Pozostało jeszcze dodać sprawdzanie czy gracz próbuje wyjechać poza teren. Zmodyfikujemy zatem metodę UpDate klasy głównej. Po wyznaczeniu kierunku i obliczeniu nowej pozycji czołgu ale przed jej aktualizacją sprawdzimy czy nowe położenie gracza nie wykracza poza dozwolony obszar. Pobieramy sferę opisującą czołg. Przesuwamy ją w miejsce nowego położenia gracza poprzez transformację translacji. Pobieramy również sześcian opisujący teren. 4
5 bool kolizja = false; BoundingSphere sfera = gracz.sfera; sfera = sfera.transform(matrix.createtranslation(nowapozycja)); BoundingBox szescian = teren.szescian; Do sprawdzenia wzajemnej korelacji pomiędzy dwiema bryłami wykorzystujemy metodę Contains. Metoda ta zwraca zmienną typu ContainmentType, która określa czy dana bryła zawiera się, przecina lub jest poza inną bryłą. W naszym przypadku interesuje nas aby bryła czołgu zawierała się w bryle terenu. Jeśli nie, następuje kolizja. if (szescian.contains(sfera)!= ContainmentType.Contains) kolizja = true; Jeśli nie wystąpiła kolizja aktualizujemy położenie gracza: if (!kolizja) gracz.pozycja = nowapozycja; kamera.cel = nowapozycja; 3.2 Kolizje z przeszkodami Gracz nie może już wyjechać poza teren. Dodamy teraz przeszkody w postaci prostych skrzynek. Tworzymy nowy komponent i nadajemy mu nazwę Przeszkoda. Zmieniamy dziedziczenie na DrawableGameComponent. Siatkę skrzynki będziemy przechowywać, podobnie jak siatkę czołgu, w zmiennej typu Model. Ponadto potrzebujemy również informacji o pozycji w scenie i rozmiarze, oraz bryłę opisującą, którą będzie sześcian. Deklarujemy więc odpowiednie zmienne: Vector3 pozycja; float rozmiar; Model model; BoundingBox szescian; W konstruktorze inicjujemy zmienne: public Przeszkoda(Game game, Model model, Vector3 pozycja, float rozmiar) : base(game) this.model = model; this.pozycja = pozycja; this.rozmiar = rozmiar; 5
6 szescian = new BoundingBox(new Vector3(-rozmiar + pozycja.x, pozycja.y, -rozmiar + pozycja.z), new Vector3(rozmiar + pozycja.x, pozycja.y + 2 * rozmiar, rozmiar + pozycja.z)); Rysowanie przeszkody realizujemy analogicznie do rysowania czołgu: public override void Draw(GameTime gametime) GraphicsDevice urzadzenie = (GraphicsDevice)Game.Services.GetService(typeof(GraphicsDevice)); Kamera kamera = (Kamera)Game.Services.GetService(typeof(Kamera)); Matrix[] transformacje = new Matrix[model.Bones.Count]; model.copyabsolutebonetransformsto(transformacje); foreach (ModelMesh mesh in model.meshes) foreach (BasicEffect effect in mesh.effects) effect.enabledefaultlighting(); effect.projection = kamera.projekcja; effect.view = kamera.widok; effect.world = transformacje[mesh.parentbone.index] * Matrix.CreateScale(rozmiar) * Matrix.CreateTranslation(pozycja); mesh.draw(); base.draw(gametime); Na koniec udostępniamy zmienną szescian poprzez właściwość: public BoundingBox Szescian get return szescian; Stworzymy teraz dwie przeszkody. Przechodzimy do klasy głównej gry. Dodajemy do projektu plik przeszkoda.fbx. Deklarujemy zmienną typu Model oraz dwie zmienne typu Przeszkoda. Model przeszkoda; Przeszkoda przeszkoda1; Przeszkoda przeszkoda2; 6
7 Następnie w metodzie LoadContent wczytujemy model przeszkody z dodanego właśnie pliku: przeszkoda = Content.Load<Model>("przeszkoda"); Do listy komponentów dodajemy dwie przeszkody: przeszkoda1 = new Przeszkoda(this, przeszkoda, new Vector3(-6.0f, 0.0f, -3.0f), 0.9f); Components.Add(przeszkoda1); przeszkoda2 = new Przeszkoda(this, przeszkoda, new Vector3(2.5f, 0.0f, 2.5f), 1.2f); Components.Add(przeszkoda2); Pozostało jeszcze obsłużyć kolizje czołgu z przeszkodą. W metodzie UpDate dodamy sprawdzenie czy gracz najechał na którąś z przeszkód. Tym razem zależy nam aby czołg znajdował się poza bryłą przeszkody. Zatem kolizja wystąpi kiedy bryła gracza przetnie lub zawrze się w bryle przeszkody. szescian = przeszkoda1.szescian; if (szescian.contains(sfera)!= ContainmentType.Disjoint) kolizja = true; szescian = przeszkoda2.szescian; if (szescian.contains(sfera)!= ContainmentType.Disjoint) kolizja = true; Rys. 1 prezentuje przykładowy zrzut ekranu z gotowej aplikacji. Rys. 1 - Przykładowy zrzut ekranu z gotowej aplikacji 7
8 4. Zadanie dodatkowe Wykorzystując poznane mechanizmy należy dodać możliwość wystrzelenia z lufy pocisku. Do instrukcji został dołączony plik kula.fbx, który zawiera odpowiedni model 3D. Po naciśnięciu przez gracza odpowiedniego przycisku powinien nastąpić wystrzał. Dodatkowo należy sprawdzić kolizje pocisku z przeszkodami i w przypadku trafienia w przeszkodę należy ją usunąć i losowo wygenerować nową (uwzględniając położenie czołgu nowa przeszkoda nie powinna przenikać ani czołgu ani drugiej przeszkody). 8
Systemy wirtualnej rzeczywistości. Komponenty i serwisy
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Komponenty i serwisy Wstęp: W trzeciej części przedstawione zostaną podstawowe techniki
Bardziej szczegółowoRozdział 4 Komponenty gry na przykładzie prostopadłościanu
Rozdział 4 Komponenty gry na przykładzie prostopadłościanu Wersja z 2014-03-21 Budowanie gry, nawet stosunkowo prostej, to spore wyzwanie dla programisty. Bardzo łatwo zgubić się w dużej ilości linii kodu
Bardziej szczegółowoProgramowanie telefonów z Windows Phone 7, cz. 3
Programowanie telefonów z Windows Phone 7, cz. 3 Piotr M. Szczypiński Instytut Elektroniki Politechniki Łódzkiej http://www.eletel.p.lodz.pl/pms/ piotr.szczypinski@p.lodz.pl Budynek B9, II piętro, pokój
Bardziej szczegółowoSystemy wirtualnej rzeczywistości. Podstawy grafiki 3D
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Podstawy grafiki 3D Wstęp: W drugiej części przedstawione zostaną podstawowe mechanizmy
Bardziej szczegółowoGry Komputerowe Laboratorium 3. Organizacja obiektów sceny Kolizje obiektów. mgr inż. Michał Chwesiuk 1/20. Szczecin, r
Gry Komputerowe Laboratorium 3 Organizacja obiektów sceny obiektów mgr inż. Michał Chwesiuk 1/20 Diagram Klas 2/20 Stwórz nową klasę GameObject. Klasa ta będzie klasą abstrakcyjną, z niej będą dziedziczyć
Bardziej szczegółowoSieciowe Technologie Mobilne. Laboratorium 2
Sieciowe Technologie Mobilne Laboratorium 2 Tworzenie wieloplatformowych aplikacji mobilnych przy użyciu biblioteki PhoneGap. Łukasz Kamiński Laboratorium 2 Na dzisiejszym laboratorium skupimy się na implementacji
Bardziej szczegółowoCzym jest wykrywanie kolizji. Elementarne metody detekcji kolizji. Trochę praktyki: Jak przygotować Visual Studio 2010 do pracy z XNA pod Windows
Czym jest wykrywanie kolizji. Elementarne metody detekcji kolizji. Trochę praktyki: Jak przygotować Visual Studio 2010 do pracy z XNA pod Windows Phone 7. Skąd i jakie paczki pobrać. Coś napiszemy :-)
Bardziej szczegółowoMechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Bardziej szczegółowoWydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.
Politechnika Białostocka Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej Konstrukcje i Technologie w Aparaturze Elektronicznej Ćwiczenie nr 5 Temat: Przetwarzanie A/C. Implementacja
Bardziej szczegółowoZaawansowana Grafika Komputerowa
Zaawansowana Komputerowa Michał Chwesiuk Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Wydział Informatyki 28 Luty 2017 Michał Chwesiuk Zaawansowana Komputerowa 28 Luty 2017 1/11 O mnie inż.
Bardziej szczegółowoBLENDER- Laboratorium 1 opracował Michał Zakrzewski, 2014 r. Interfejs i poruszanie się po programie oraz podstawy edycji bryły
BLENDER- Laboratorium 1 opracował Michał Zakrzewski, 2014 r. Interfejs i poruszanie się po programie oraz podstawy edycji bryły Po uruchomieniu programu Blender zawsze ukaże się nam oto taki widok: Jak
Bardziej szczegółowoUnity 2D - prosta gra
www.math.uni.lodz.pl/ radmat Cel ćwiczeń Celem bieżących ćwiczeń jest stworzenie prostej gry 2D. Prosta gra Stworzymy prostą grę, w której będziemy sterować pojazdem kosmicznym i będziemy mogli strzelać
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych
Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,
Bardziej szczegółowoZad. 3: Rotacje 2D. Demonstracja przykładu problemu skończonej reprezentacji binarnej liczb
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
Bardziej szczegółowoZad. 7: Sterowanie robotami mobilnymi w obecności przeszkód
Zad. 7: Sterowanie robotami mobilnymi w obecności przeszkód 1 Cel ćwiczenia Utrwalenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas oraz czynności. Wykorzystanie
Bardziej szczegółowoZad. 4: Rotacje 2D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego
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
Bardziej szczegółowoInstrukcja do zajęć (całość)
Instrukcja do zajęć (całość) 1. Ustawiamy tło i pojazd. Zaprogramujemy pojazd tak, by obracał się w kierunku myszki. Wstawianie duszka: Ustawianie tła: Uwaga: Po dodaniu duszka w zakładce kostiumy, musimy
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.
Bardziej szczegółowoZad. 6: Sterowanie robotem mobilnym
Zad. 6: Sterowanie robotem mobilnym 1 Cel ćwiczenia Utrwalenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas, czynności oraz przypadków użycia. Wykorzystanie dziedziczenia
Bardziej szczegółowoGry Komputerowe - laboratorium 2. Kamera FPP / TPP. mgr inż. Michał Chwesiuk 1/11. Szczecin, r
Gry Komputerowe - laboratorium 2 FPP / TPP mgr inż. Michał Chwesiuk 1/11 a model 2/11 Stwórz nową klasę Player a model Do stworzonej klasy Player w pliku player.h dodaj trzy pola (trzeba dodać #include
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
Bardziej szczegółowoUnity 3D - pierwsze skrypty
www.math.uni.lodz.pl/ radmat Cel ćwiczeń Celem bieżących ćwiczeń jest napisanie pierwszych, prostych skryptów, m.in wyświetlających upływający czas gry oraz jej stan. Wykorzystamy projekt z poprzednich
Bardziej szczegółowoTablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011
Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Załóżmy, że uprawiamy jogging i chcemy monitorować swoje postępy. W tym celu napiszemy program, który zlicza, ile czasu
Bardziej szczegółowoPodstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
Bardziej szczegółowoZad. 6: Sterowanie robotami mobilnymi w obecności przeszkód
Zad. 6: Sterowanie robotami mobilnymi w obecności przeszkód 1 Cel ćwiczenia Utrwalenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas oraz czynności. Wykorzystanie
Bardziej szczegółowoFINCH PONG. Realizator: Partner: Patronat:
FINCH PONG Realizator: Partner: Patronat: Dzisiaj nauczymy robota Finch kontrolować ruchy paletki do finch ponga. Będziemy poruszać paletką w prawo i w lewo, żeby piłka odbijała się od niej. 6. Wprowadzamy
Bardziej szczegółowoGry Komputerowe Interaktywna kamera FPP
Gry Komputerowe Interaktywna kamera FPP Michał Chwesiuk Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Wydział Informatyki 28 Marzec 2018 Michał Chwesiuk Laboratorium 2 28 Marzec 2018 1/ 11
Bardziej szczegółowoGrafika Komputerowa Materiały Laboratoryjne
Grafika Komputerowa Materiały Laboratoryjne Laboratorium 14 Blender, podstawy animacji Wstęp Zagadnienie tworzenia animacji 3D w Blenderze jest bardzo szerokie i wiąże się z wieloma grupami rozwiązao.
Bardziej szczegółowoTworzenie gier na urządzenia mobilne
Katedra Inżynierii Wiedzy Ćwiczenia 1 e-mail: przemyslaw.juszczuk@ue.katowice.pl Konsultacje: na stronie katedry + na stronie domowej Pokój 202c budynek A pjuszczuk.pl Warunki zaliczenia Kolokwium z części
Bardziej szczegółowoCzęść XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.
Część XVII C++ Funkcje Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. 2 3 Tworzymy deklarację i definicję funkcji o nazwie pobierzln() Funkcja
Bardziej szczegółowoMechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Bardziej szczegółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoSymulacje komputerowe
Fizyka w modelowaniu i symulacjach komputerowych Jacek Matulewski (e-mail: jacek@fizyka.umk.pl) http://www.fizyka.umk.pl/~jacek/dydaktyka/modsym/ Symulacje komputerowe Dynamika bryły sztywnej Wersja: 8
Bardziej szczegółowoTrajektoria rzuconego ukośnie granatu w układzie odniesienia skręcającego samolotu
Politechnika Łódzka FTIMS Kierunek: Informatyka rok akademicki: 2009/2010 sem. 3. grupa II Termin: 10 XI 2009 Zadanie: Trajektoria rzuconego ukośnie granatu w układzie odniesienia skręcającego samolotu
Bardziej szczegółowoTemat: Transformacje 3D
Instrukcja laboratoryjna 11 Grafika komputerowa 3D Temat: Transformacje 3D Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota, mgr inż. Tomasz Michno 1 Wstęp teoretyczny Bardzo często programując
Bardziej szczegółowoDeklaracja i definicja metod, zwracanie wartości z metod, przekazywania parametrów do metod
Definiowanie klas w C#, składowe klasy, modyfikatory dostępu do klas i składowych klas Deklaracja i definicja metod, zwracanie wartości z metod, przekazywania parametrów do metod Zadanie 1 Napisz program
Bardziej szczegółowoOpenGL : Oświetlenie. mgr inż. Michał Chwesiuk mgr inż. Tomasz Sergej inż. Patryk Piotrowski. Szczecin, r 1/23
OpenGL : mgr inż. Michał Chwesiuk mgr inż. Tomasz Sergej inż. Patryk Piotrowski 1/23 Folder z plikami zewnętrznymi (resources) Po odpaleniu przykładowego projektu, nie uruchomi się on poprawnie. Powodem
Bardziej szczegółowo1. Prymitywy graficzne
1. Prymitywy graficzne Prymitywy graficzne są elementarnymi obiektami jakie potrafi bezpośrednio rysować, określony system graficzny (DirectX, OpenGL itp.) są to: punkty, listy linii, serie linii, listy
Bardziej szczegółowoZad. 6: Sterowanie dronami w obecności przeszkód
Zad. 6: Sterowanie dronami w obecności przeszkód 1 Cel ćwiczenia Utrwalenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas oraz czynności. Wykorzystanie dziedziczenia
Bardziej szczegółowoUniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Celem ćwiczenia jest zapoznanie studentów z najprostszą dynamiczną strukturą
Bardziej szczegółowoGrafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30
Wykład 4 mgr inż. 1/30 Synteza grafiki polega na stworzeniu obrazu w oparciu o jego opis. Synteza obrazu w grafice komputerowej polega na wykorzystaniu algorytmów komputerowych do uzyskania obrazu cyfrowego
Bardziej szczegółowoIRONCAD. TriBall IRONCAD Narzędzie pozycjonujące
IRONCAD IRONCAD 2016 TriBall o Narzędzie pozycjonujące Spis treści 1. Narzędzie TriBall... 2 2. Aktywacja narzędzia TriBall... 2 3. Specyfika narzędzia TriBall... 4 3.1 Kula centralna... 4 3.2 Kule wewnętrzne...
Bardziej szczegółowoInformatyka II. Laboratorium Aplikacja okienkowa
Informatyka II Laboratorium Aplikacja okienkowa Założenia Program będzie obliczał obwód oraz pole trójkąta na podstawie podanych zmiennych. Użytkownik będzie poproszony o podanie długości boków trójkąta.
Bardziej szczegółowoLaboratorium 1. Część I. Podstawy biblioteki graficznej OpenGL.
Laboratorium 1 Część I Podstawy biblioteki graficznej OpenGL. I. Konfiguracja środowiska 1. Ściągamy bibliotekę freeglut i rozpakujemy do głównego folderu dysku systemowego np. C:\freeglut 2. Uruchamiamy
Bardziej szczegółowoPrzykładowa dostępna aplikacja w Visual Studio - krok po kroku
Przykładowa dostępna aplikacja w Visual Studio - krok po kroku Zadaniem poniższego opisu jest pokazanie, jak stworzyć aplikację z dostępnym interfejsem. Sama aplikacja nie ma konkretnego zastosowania i
Bardziej szczegółowoKlasy i obiekty cz II
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy
Bardziej szczegółowoRozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
Bardziej szczegółowoPrzekształcenia geometryczne. Dorota Smorawa
Przekształcenia geometryczne Dorota Smorawa Przekształcenia geometryczne Na poprzednich laboratoriach już dowiedzieliśmy się, na czym polegają podstawowe przekształcenia geometryczne. Trzy podstawowe przekształcenia
Bardziej szczegółowoBudowa i generowanie planszy
Gra Saper została napisana w. Jest dostępna w każdej wersji systemu Windows. Polega na odkrywaniu zaminowanej planszy tak, aby nie trafić na minę. Gra działa na bardzo prostej zasadzie i nie wymaga zaawansowanego
Bardziej szczegółowoProgramowanie telefonów z Windows Phone 7, cz. 5
Programowanie telefonów z Windows Phone 7, cz. 5 Piotr M. Szczypiński Instytut Elektroniki Politechniki Łódzkiej http://www.eletel.p.lodz.pl/pms/ piotr.szczypinski@p.lodz.pl Budynek B9, II piętro, pokój
Bardziej szczegółowoRysunek 1: Okno timeline wykorzystywane do tworzenia animacji.
Ćwiczenie 5 - Tworzenie animacji Podczas tworzenia prostej animacji wykorzystywać będziemy okno Timeline domyślnie ustawione na dole okna Blendera (Rys. 1). Proces tworzenia animacji polega na stworzeniu
Bardziej szczegółowoPodstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Bardziej szczegółowoPodstawy programowania, Poniedziałek , 8-10 Projekt, część 3
Podstawy programowania, Poniedziałek 13.05.2015, 8-10 Projekt, część 3 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
Bardziej szczegółowoZad. 5: Sterowanie robotem mobilnym
Zad. 5: Sterowanie robotem mobilnym 1 Cel ćwiczenia Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas, czynności oraz przypadków użycia. Wykorzystanie
Bardziej szczegółowoWIZUALIZACJA I STEROWANIE ROBOTEM
Maciej Wochal, Opiekun koła: Dr inż. Dawid Cekus Politechnika Częstochowska, Wydział Inżynierii Mechanicznej i Informatyki, Instytut Mechaniki i Podstaw Konstrukcji Maszyn, Koło Naukowe Komputerowego Projektowania
Bardziej szczegółowoProgramowanie strukturalne i obiektowe. Funkcje
Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy
Bardziej szczegółowoPolitechnika Poznańska, Instytut Informatyki, SUM-TWO
Politechnika Poznańska, Instytut Informatyki, SUM-TWO 11 kwietnia 2015 Historia DirectX Gry pod DOS korzystały z własnych bibliotek graficznych. Pierwsze wersje Windows umożliwiały tworzenie grafiki tylko
Bardziej szczegółowo8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.
8. Wektory Przykłady 8.1. Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana. Uwaga! Kod poniżej. To zadanie można rozwiązać przy użyciu wiedzy
Bardziej szczegółowoZad. 5: Sterowanie dronem
1 Cel ćwiczenia Zad. 5: Sterowanie dronem Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas, czynności oraz przypadków użycia. Wykorzystanie dziedziczenia
Bardziej szczegółowoSpadające jabłuszka. licencja CC-BY-SA Uznanie autorstwa Na tych samych warunkach 3.0 Polska. Strona 51
Spadające jabłuszka Materiały opracowane przez Ośrodek Edukacji Informatycznej i Zastosowań Komputerów w Warszawie w ramach programu Warszawa Programuje licencja CC-BY-SA Uznanie autorstwa Na tych samych
Bardziej szczegółowo3. Macierze i Układy Równań Liniowych
3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x
Bardziej szczegółowoZajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()
Bardziej szczegółowo4. Funkcje. Przykłady
4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni
Bardziej szczegółowoZad. 10: Sterowanie manipulatorem cz. 2 i 3
Zad. 10: Sterowanie manipulatorem cz. 2 i 3 1 Cel ćwiczenia Zapoznanie się dziedziczeniem klas oraz mechanizmami niejawnego rzutowania w górę. Przyswojenie pojęcia klasy abstrakcyjnej i praktyczne jej
Bardziej szczegółowoTworzenie nowego rysunku Bezpośrednio po uruchomieniu programu zostanie otwarte okno kreatora Nowego Rysunku.
1 Spis treści Ćwiczenie 1...3 Tworzenie nowego rysunku...3 Ustawienia Siatki i Skoku...4 Tworzenie rysunku płaskiego...5 Tworzenie modeli 3D...6 Zmiana Układu Współrzędnych...7 Tworzenie rysunku płaskiego...8
Bardziej szczegółowoW powyższym kodzie utworzono wyliczenie dni tygodnia.
Typ wyliczeniowy (zwane również enumeration lub enum) jest to typ danych składający się z zestawu nazwanych wartości. Do zmiennej, która została zadeklarowana jako typ wyliczeniowy może być przypisane
Bardziej szczegółowoTak przygotowane pliki należy umieścić w głównym folderze naszego programu. Klub IKS www.informatyka.edu.pl
To jeden z ostatnich odcinków naszego kursu. Mam nadzieję, że pisanie własnego programu było ciekawym doświadczeniem. Zaproponowana w tym odcinku funkcja uatrakcyjni twój program. Stworzymy tak zwane okno
Bardziej szczegółowoStrzelanka dla dwóch graczy
Strzelanka dla dwóch graczy Zadanie 5: Strzelanie Dodanie zmiennej globalnej W naszej grze pojawia się problem. Skąd pocisk ma wiedzieć, w którą stronę lecieć? Pocisk nie może sprawdzić kąta nachylenia
Bardziej szczegółowoEdytor tekstu MS Word 2003 - podstawy
Edytor tekstu MS Word 2003 - podstawy Cz. 4. Rysunki i tabele w dokumencie Obiekt WordArt Jeżeli chcemy zamieścić w naszym dokumencie jakiś efektowny napis, na przykład hasło reklamowe, możemy wykorzystać
Bardziej szczegółowoWprowadzenie do UML, przykład użycia kolizja
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoPARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Bardziej szczegółowoznajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Bardziej szczegółowoRozdział 6 Cienie rzucane. Mieszanie kolorów
Rozdział 6 Cienie rzucane. Mieszanie kolorów Wersja z 2014-04-04 W tym rozdziale omówione są zagadnienia związane znaczeniowo z oświetleniem: cienie rzucane, przezroczystość, mgła. Nie maja one jednak
Bardziej szczegółowoProgramowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h
Programowanie II Lista 3 Modyfikatory dostępu plik TKLientBanku.h plik z funkcją main Przyjaźń Dziedziczenie Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące. Jest to
Bardziej szczegółowoBadanie zależności położenia cząstki od czasu w ruchu wzdłuż osi Ox
A: 1 OK Muszę to powtórzyć... Potrzebuję pomocy Badanie zależności położenia cząstki od czasu w ruchu wzdłuż osi Ox 1. Uruchom program Modellus. 2. Wpisz x do okna modelu. 3. Naciśnij przycisk Interpretuj
Bardziej szczegółowoDokąd on zmierza? Przemieszczenie i prędkość jako wektory
A: 1 OK Muszę to powtórzyć... Potrzebuję pomocy Dokąd on zmierza? Przemieszczenie i prędkość jako wektory Łódź żegluje po morzu... Płynie z szybkością 10 węzłów (węzeł to 1 mila morska na godzinę czyli
Bardziej szczegółowoSymulacja samochodu z kamerą stereowizyjną. Krzysztof Sykuła 15 czerwca 2007
Symulacja samochodu z kamerą stereowizyjną Krzysztof Sykuła 15 czerwca 2007 1 1 Opis wykonanego projektu Symulacja samochodu z kamerą stereowizyjną była pretekstem do napisania Engine u 3D, wykorzystującego
Bardziej szczegółowoStudia Podyplomowe Grafika Komputerowa i Techniki Multimedialne, 2017, semestr II Modelowanie 3D - Podstawy druku 3D. Ćwiczenie nr 4.
Ćwiczenie nr 4 Metaobiekty 1 Materiały ćwiczeniowe Wszelkie materiały ćwiczeniowe: wykłady, instrukcje oraz ewentualne pliki ćwiczeniowe dla potrzeb realizacji materiału dydaktycznego z przedmiotu Modelowanie
Bardziej szczegółowoUnity 3D - własny ekran startowy i menu gry
www.math.uni.lodz.pl/ radmat Cel ćwiczeń Celem bieżących ćwiczeń jest stworzenie własnego ekranu startowego oraz menu gry. Własny ekran startowy Tworzymy nowy, pusty obiekt GameObject Create Empty i nadajemy
Bardziej szczegółowoJęzyki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Bardziej szczegółowoWidoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?
Część XVIII C++ Funkcje 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? Umiemy już podzielić nasz
Bardziej szczegółowoCzym są właściwości. Poprawne projektowanie klas
Z akcesorów get i set korzysta każdy kto programuje w C#. Stanowią one duże udogodnienie w programowaniu obiektowym. Zapewniają wygodę, bezpieczeństwo i znacząco skracają kod. Akcesory są ściśle związane
Bardziej szczegółowoPing-Pong. Gra dla dwóch graczy.
Ping-Pong. Gra dla dwóch graczy. Uwaga: Wszystkie pliki graficzne potrzebne do wykonania gry znajdują się w archiwum ping-pong.zip. Pliki należy wypakować do jednego katalogu. Instrukcja 1. Na scenę wczytujemy
Bardziej szczegółowoDiagramy UML, przykład problemu kolizji
Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Bardziej szczegółowoScenariusz lekcji Ozobot w klasie: Tabliczka mnożenia
Scenariusz lekcji Ozobot w klasie: Tabliczka mnożenia Opracowanie scenariusza: Richard Born Adaptacja scenariusza na język polski: mgr Piotr Szlagor Tematyka: Informatyka, matematyka, obliczenia, algorytm
Bardziej szczegółowoLekcja 5 - PROGRAMOWANIE NOWICJUSZ
Lekcja 5 - PROGRAMOWANIE NOWICJUSZ 1 Programowanie i program według Baltiego Najpierw sprawdźmy jak program Baltie definiuje pojęcia programowania i programu: Programowanie jest najwyższym trybem Baltiego.
Bardziej szczegółowoJak napisać program obliczający pola powierzchni różnych figur płaskich?
Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy
Bardziej szczegółowoJęzyk ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Bardziej szczegółowoJęzyki programowania imperatywnego
Katedra Inżynierii Wiedzy laborki 7 i 8 Klasy abstrakcyjne klasa abstrakcyjna pozwala wymusić implementację metody; klasa oznaczona jest jako abstrakcyjna, jeżeli przynajmniej jedna metoda jest abstrakcyjna;
Bardziej szczegółowoGry Komputerowe Laboratorium 4. Teksturowanie Kolizje obiektów z otoczeniem. mgr inż. Michał Chwesiuk 1/29. Szczecin, r
Gry Komputerowe Laboratorium 4 Teksturowanie Kolizje obiektów z otoczeniem mgr inż. Michał Chwesiuk 1/29 Klasa Stwórzmy najpierw klasę TextureManager, która będzie obsługiwała tekstury w projekcie. 2/29
Bardziej szczegółowoSieciowe Technologie Mobilne. Laboratorium 4
Sieciowe Technologie Mobilne Laboratorium 4 Tworzenie wieloplatformowych aplikacji mobilnych przy użyciu biblioteki PhoneGap. Łukasz Kamiński Laboratorium 4 Urozmaicone zostaną animacje potworów, aby odpowiadały
Bardziej szczegółowoCzęść 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Bardziej szczegółowoAlgorytm grupowania danych typu kwantyzacji wektorów
Algorytm grupowania danych typu kwantyzacji wektorów Wstęp Definicja problemu: Typowe, problemem często spotykanym w zagadnieniach eksploracji danych (ang. data mining) jest zagadnienie grupowania danych
Bardziej szczegółowoZadanie polega na zbudowaniu i wyświetleniu przykładowej animowanej sceny przedstawiającej robota spawalniczego typu PUMA.
Zadanie PUMA Zadanie polega na zbudowaniu i wyświetleniu przykładowej animowanej sceny przedstawiającej robota spawalniczego typu PUMA. Cały projekt składa się z następujących elementów: 1. Animacja ramion
Bardziej szczegółowoInterfejsy i klasy wewnętrzne
Interfejsy i klasy wewnętrzne mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Interfejs klasy sposób komunikacji z jej obiektami (zestaw składowych publicznych). Określa on zestaw
Bardziej szczegółowoKompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/
STL, czyli o co tyle hałasu W świecie programowania C++, hasło STL pojawia się nieustannie i zawsze jest o nim głośno... często początkujące osoby, które nie znają STL-a pytają się co to jest i czemu go
Bardziej szczegółowoZastosowania Robotów Mobilnych
Zastosowania Robotów Mobilnych Temat: Zapoznanie ze środowiskiem Microsoft Robotics Developer Studio na przykładzie prostych problemów nawigacji. 1) Wstęp: Microsoft Robotics Developer Studio jest popularnym
Bardziej szczegółowoGrafika 3D program POV-Ray - 94 -
Temat 12: Polecenie blob parametry i zastosowanie do tworzenia obiektów. Użycie polecenia blob (kropla) jest wygodnym sposobem tworzenia gładkiego przejścia pomiędzy bryłami (kulami lub walcami). Możemy
Bardziej szczegółowoAnimowana grafika 3D Laboratorium 1
3DStudio MAX zapoznanie z interfejsem Pierwsze laboratorium posłuży do zapoznania się z interfejsem i sposobem budowania prostych obiektów 3D w programie 3D studio MAX. Oprogramowanie dostępne w laboratorium
Bardziej szczegółowo