Co to są wektory?
Wektory to zbiory współrzędnych o różnych wymiarach. Każda współrzędna w wektorze reprezentuje jakąś absolutną pozycję w tym kierunku przestrzeni, w której znajduje się wektor.
- Wektor 1-D byłby {1} . Może to być na przykład pozycja w X = 1. Lub czas t = 1.
- Wektor 2D byłby {-4,3} . Może to być na przykład pozycja w pozycji -4 na osi X i 3 na osi Y. Może to być również temperatura (3 stopnie) w pozycji (-4 metry) z powrotem na osi X.
- Wektor 3-D byłby {1,2,3} . Może to być pozycja w przestrzeni 1 wzdłuż osi X, 2 z powrotem na osi Y i 3 w górę na osi Z. Lub może to być 1 czerwony, 2 zielony i 3 niebieski w kolorze. Lub może to być pozycja XY ( {1,2} ) w pewnym momencie T ( {3} ).
Zauważ, że we wszystkich przypadkach przypisaliśmy znaczenie wektorom dla naszego problemu. Podczas gdy w grach często używane są wektory do geometrii, nie ma powodu, dla którego nie można zrobić z nimi nic innego.
Dlaczego używam wektorów?
Po pierwsze, nigdy nie musisz używać wektorów. Tak długo, jak śledzisz xiy, lub dowolne współrzędne, na których ci zależy, w jakiś sposób wszystko jest w porządku.
Zaletą stosowania wektorów jest jednak to, że starannie reprezentują takie rzeczy, jak kierunek i pozycja, a także mają zdefiniowane kilka operacji matematycznych, które ułatwiają życie.
Prostym przykładem tego jest produkt punktowy .
Załóżmy, że masz system radarowy w grze typu top-down. Każdy wróg pojawiający się w sektorze radaru (jakiś klin w kształcie kulek w 2D) powinien otrzymać na ekranie małą czerwoną kropkę. Musisz więc dowiedzieć się, którzy wrogowie są w twojej sekcji radaru.
Możesz sprawdzić, czy wrogowie znajdują się w trójkącie. Możesz także sprawdzić, czy wrogowie znajdują się na przecięciu dwóch półprzestrzeni płaszczyzn / linii definiujących dwie strony sektora radaru.
Lub możesz po prostu użyć produktu kropkowego do sprawdzenia. Oto jak:
- Utwórz wektor, przechodząc od środka radaru w kierunku „przedniej części radaru”. Normalizuj to.
- Utwórz wektor idący od środka radaru w kierunku obiektu, dla którego chcemy sprawdzić widzialność radaru. Normalizuj to.
- Weź iloczyn kropkowy dwóch znormalizowanych wektorów.
- Weź arcus cosinus tego produktu i sprawdź, czy jest on mniejszy niż połowa kąta szerokości radaru. Jeśli tak, narysuj blip.
Jest to bardzo przydatne, a także pozwala teraz łatwo mieć radary, które wskazują w różnych kierunkach (wystarczy zmienić wektor do przodu) i mają różne szerokości (wystarczy zmienić kąt szerokości radaru) - i można ponownie użyć tego samego kodu również w tych przypadkach !
Dlaczego jeszcze używam wektorów?
Jeśli jesteś w 2D, być może najlepszym sposobem na uzyskanie złożonych efektów i ruchów (wirowanie, skalowanie itp.) Jest użycie wykresu sceny. Planeta ma orbitujący statek, statek ma orbitującego drona. Obliczenia tego bez użycia matematyki wektorowej są naprawdę brzydkie.
W przypadku matematyki wektorowej każdy z nich reprezentuje macierz punktową i macierz transformacji 3x3. Planeta używa swojej transformacji, statek używa swojej transformacji i transformacji planety, a dron używa transformacji i transformacji statku i transformacji planety.
Gdy planeta się porusza, zmieniasz jej transformację, a statek i dron automatycznie ustawiają się „za darmo”. Znacznie czystszy kod.
Nadal nie jestem przekonany.
Wektory są również natywną reprezentacją pozycji, geometrii i ruchu używaną przez prawie wszystkie biblioteki graficzne - a na pewno OpenGL i DirectX. Prawdopodobnie nie uciekniesz bez konieczności korzystania z nich.
Wnioski
Wektory są potężnym narzędziem do pisania przejrzystego kodu, który rozwiązuje problemy geometryczne w sposób czysty i elegancki.