Arkanoid 3D krok po kroku III
02.08.2010 - Olgierd Humeńczuk
W poprzednich artykułach ( pierwszym i drugim ) nauczyliśmy się wyświetlać podstawowe wielokąty i bryły geometryczne. Dodaliśmy także odrobinę realizmu, wykorzystując podstawowy model oświetlenia biblioteki Open GL. W tym artykule zajmiemy się:
Efekt końcowyPoniżej znajduje się film prezentujący efekt jaki osiągniemy na zakończenie tego artykułu.Plansza do grySpróbujmy naszkicować planszę naszej gry i zastanówmy się, jak poruszać się będą jej obiekty. Rys. 1. Plansza. Widok z góry. Jak widać na Rys. 1, będziemy mieli do czynienia z dwoma typami ruchomych obiektów: rakietką oraz kulą. Rakietka może przemieszczać się tylko torem wyznaczonym osią X. Poruszanie się rakietki mamy prawie gotowe. Musimy zastanowić się jeszcze nad jej prędkością oraz ograniczeniami wynikającymi z rozmiarów planszy. Kula może poruszać się w dowolnym kierunku. Dodatkowo musi odpowiednio odbijać się od ścian planszy ( w przyszłości również od klocków ) i od rakietki. Prędkość kuli na tym etapie prac uczynimy stałą. Tworzenie elementów planszyDo wyświetlenia planszy będziemy potrzebowali kodu odpowiedzialnego za tworzenie następujących brył:
createCube . Dlatego omówimy jedynie tworzenie siatki sfery.
Implementacja pozostałych dwóch funkcji została dołączona do kodu, ale dobrym ćwiczeniem będzie
napisanie ich własnoręcznie.
SferaZacznijmy od oczywistej obserwacji: sferę musimy wyświetlić używając wbudowanych w Open GL wielokątów prostych: trójkątów lub czworokątów. Oznacza to, że będziemy musieli przybliżać wygląd sfery, używając wyłącznie tych wielokątów. Rys. 2. Siatka sfery. Ponieważ nie istnieje jedna optymalna liczba wielokątów, jaką moglibyśmy użyć do wyświetlenia sfery, skonstruujemy funkcję, która będzie przyjmować liczbę podziałów, czyli dokładność z jaką będziemy chcieli naszą sferę przedstawić. Rys. 2. przedstawia przykładową siatkę sfery. Wyróżnione kolorem czerwonym wierzchołki siatki tworzą jeden z czworokątów. Tymi czworokątami przybliżymy jej kształt. Nasza funkcja, dla danej liczby podziałów, powinna zwrócić listę wierzchołków ułożonych w kolejności takiej jak na Rys. 2. Jak zatem iterować przez odpowiednie wierzchołki? Jak je wyznaczać ? Aby zrealizować to zadanie posłużymy się układem współrzędnych sferycznych. Zgodnie z Rys. 3. każdy punkt należący do sfery o promieniu długości , możemy opisać używając dokładnie dwóch parametrów:
Rys. 3. Współrzędne sferyczne. Jak uzyskać wartości współrzędnych w układzie kartezjańskim?Konwersję z układu sferycznego na współrzędne kartezjańskie punktu określają wzory:
skąd,
natomiast,
(2 ocen) |
Copyright © 2008-2010 Wrocławski Portal Informatyczny
design: rafalpolito.com