Co takiego różni się / jest skomplikowane / przydatne w wektorach?


21

Wybacz mi, jeśli nie jest to prawdziwe pytanie, ale naprawdę jestem zdezorientowany.

Ciągle słyszę, jak inni twórcy gier mówią o tym, jak używanie wektorów jest bardzo przydatne, ale także o tym, jak wszyscy są zastraszani przez matematykę wektorów, a wektory mogą wydawać się zniechęcające. Nigdy się nie dowiedziałem o nich.

W końcu spojrzałem na Vector na Wikipedię i byłem zaskoczony. O ile się nie mylę, wektor (dla uproszczenia, powiedzmy, że jest 2D), jest tylko współrzędną xiy. Jeśli źle zrozumiałem, popraw mnie.

Oto moje pytanie: czy to nie znaczy, że jakakolwiek reprezentacja dwóch (lub trzech) współrzędnych wymiarowych jest wektorem? Jeśli tak, to wektory i współrzędne są tym samym. Tworzenie gry bez współrzędnych jest prawie niemożliwe , więc w jaki sposób wektory są mylące lub nowe dla kogoś, kto wykonał dowolną ilość programowania?

Przydałoby mi się wyjaśnienie. Każda pomoc jest mile widziana.


5
Wektory są dość proste, dopóki nie zaczniesz obracać w 3D ... wtedy potrzebujesz czwartorzędów, a one oszaleją.
Alistair Buxton

Pojęcie wektora jest bardzo mylące. Zapytałem z matematyki, math.stackexchange.com/questions/429363 , math.stackexchange.com/questions/384927, ale nie otrzymałem wyraźnej odpowiedzi. To czysta frustracja. Możesz dodać.
Val

1
Przy wszystkich złych analogiach w tych odpowiedziach nic dziwnego, że ludzie się mylą.
Alistair Buxton

Odpowiedzi:


29

Nie pozwól, aby matematyka usłyszała, jak nazywasz punkty Wektory lub współrzędne!

Wektor 2D ma składnik xiy , a nie współrzędną. Wektory nie definiują pozycji, określają kierunek i wielkość.

Nie potrafię powiedzieć, dlaczego ludzie są zastraszani przez nich, prawdopodobnie z tego samego powodu, dla którego ludzie są zastraszani przez matematykę, ponieważ wszyscy mówią, że jest ciężko, zanim się czegoś dowiedzą!

Wektory i współrzędne to nie to samo. Wyglądają podobnie, ale sposób ich użycia jest zupełnie inny.

Współrzędne określają pozycję na świecie. Wektory określają kierunek i wielkość. Oba są często używane razem. Jako przykład:

Postać ma pozycję i prędkość. Pozycja jest współrzędną, a prędkość jest wektorem. Dodanie prędkości do pozycji spowoduje przesunięcie postaci w kierunku wektora na odległość określoną przez wielkość wektora (zwróć uwagę, że wielkość wektora to prędkość, więc daje nam to kierunek i prędkość).

Lub w tym przykładzie:

wprowadź opis zdjęcia tutaj

Dwie postacie mają pozycje, a strzał laserowy jest wektorem. Wektor między dwiema pozycjami to (3,1). Oznacza to, że podróżuje on +3 wzdłuż osi X i +1 wzdłuż osi Y. Gdzie wielkość można znaleźć za pomocą Sqrt ((X X) + (Y Y)).

Dobry przegląd matematyki wektorowej można znaleźć na blogu Wolfire


7
Nie tylko matematycy denerwują się, gdy ktoś nazywa Vector punktem lub współrzędną. My, fizycy, też was zepsujemy.
TASagent

2
+1 Ale jeśli wybieram nit, prędkość jest wektorem, a prędkość jest wielkością tego wektora.
Ergwun,

2
@Val: Nie powiedziałbym, że to nonsens. Odnosi się do błędnego przekonania pytania, że ​​wektory są tylko współrzędnymi xi y. Ujednolicenie lub sformułowanie odpowiedzi poprzez wspomnienie o „elementach przestrzeni wektorowej” nie przyniosłoby nikomu nic dobrego poza wyjaśnieniem, dlaczego ludzie uważają zastraszanie algebry wektorowej.
Marcks Thomas

3
Wektory są tylko pozycją, ponieważ mówią ci, gdzie byś był, gdybyś zastosował je (0,0). Wektory mogą modyfikować pozycję, ale same w sobie nie zawierają informacji o pozycji. Rozumiem co mówisz. Myślę, że różnica, o której mówimy, nie jest znacząca dla tego pytania. W ten sposób wektory są wykorzystywane w tworzeniu gier. Dzięki za wkład.
MichaelHouse

4
@Val: każdy dobry wykład z algebry liniowej będzie zgodny z Byte56: wektory nie są takie same jak pozycje w przestrzeni . Sensowne jest dodanie „3 mile na północ i 1 milę na wschód” do „1 mila na południe”; ale dodanie „pozycji Białego Domu” do „pozycji Pentagonu” nie ma sensu. Po ustaleniu punktu odniesienia jako (0,0) można użyć wektorów do ustalenia punktów i odwrotnie, więc w niektórych reprezentacjach wyglądają podobnie; ale są różne. Abstrakcyjnie: porównanie przestrzeń afiniczna vs. wektor przestrzeni .
PLL

9

Myślę, że czynnik zastraszania może powstać, gdy zaczniesz zajmować się bardziej skomplikowanymi operacjami, takimi jak normalizacja, produkty kropkowe i krzyżowe oraz używanie wielu układów współrzędnych z macierzami do transformacji między nimi. Na początku niekoniecznie są one łatwe do zrozumienia, nawet jeśli masz silną geometrię i tło algebry.

Ponadto, przynajmniej w Stanach Zjednoczonych, ludzie, którzy przeszli przez typową sekwencję matematyki w szkole średniej, są przyzwyczajeni do myślenia o geometrii w kategoriach linii, nachyleń, kątów itp. Muszą w pewnym stopniu oduczyć się tych rzeczy i nauczyć się pomyśl o tym w kategoriach wektorów i macierzy. Nie chodzi o to, że pojęcia algebry liniowej są tak rozciągnięte, ale o to, że są nieco innym zestawem pojęć niż te stosowane w klasycznej geometrii, których ludzie prawdopodobnie nauczyli się w szkole.


BTW, różnica między wektorami i punktami polega na operacjach, które można na nich wykonać. Chociaż oba są reprezentowane (w określonym układzie współrzędnych) przez listę komponentów, a zatem wyglądają „tak samo”, dozwolone operacje nie są takie same. Na przykład możesz dodać dwa wektory lub pomnożyć wektor przez skalar. Nie możesz tego zrobić z punktami - a przynajmniej nie ma to sensu. Ale możesz odjąć dwa punkty, a wynikiem jest wektor od jednego punktu do drugiego. Możesz także dodać punkt do wektora, aby uzyskać nowy punkt.

Punkty i wektory zachowują się również inaczej w odniesieniu do transformacji. Mianowicie punkty podlegają tłumaczeniu, podczas gdy wektory nie. Rozważ przykład obiektu poruszającego się z pozycją (punkt) i prędkością (wektor); jeśli przetłumaczysz obiekt w inne miejsce, zmienisz jego położenie, ale nie jego prędkość.

W rzeczywistości, popierając tę ​​linię rozumowania, nie istnieją tylko wektory; istnieją inne byty, takie jak kowektory i biwektory , które mogą również „wyglądać” jak wektor pod względem posiadania listy komponentów w układzie współrzędnych, ale zachowują się inaczej pod względem dostępnych operacji i sposobu, w jaki reagują na transformacje. Wszystko to należy do dziedziny matematyki zwanej algebrą Grassmanna . Poza tym można być jeszcze bardziej ogólnym i rozważyć algebrę tensorową . To są jednak rzeczy zaawansowane.


1
Duża część mojego zamieszania spowodowała, że ​​ludzie myśleli, że wektory są tak skomplikowane, więc to pomogło. Być może uważam je za proste, ponieważ faktycznie korzystałem z geometrii w programowaniu, zanim jeszcze zacząłem naukę geometrii w szkole średniej.
starscape

1
Przykład pozycji względem prędkości zastosowany w kilku odpowiedziach załamuje się, gdy masz pozycję (punkt), prędkość (wektor) i przyspieszenie (wektor). Jeśli zmienisz prędkość, przyspieszenie się nie zmieni, ale oba są wektorami. Rozróżnienie między wektorem i punktem, choć prawidłowe, jest rozproszeniem - w praktyce wszystkie gry przechowują pozycje jako wektory, które są domyślnie względne względem początku (być może pośrednio, jeśli używa się wykresu sceny).
Alistair Buxton

1
@AlistairBuxton Nie podążam za twoim punktem - jeśli przetłumaczysz swój układ współrzędnych, ani prędkość obiektu, ani przyspieszenie nie ulegną zmianie, ale jeśli obrócisz współrzędne, wówczas zarówno prędkość, jak i przyspieszenie zostaną obrócone. Więc nie widzę, gdzie coś się „psuje”.
Nathan Reed,

2
@AlistairBuxton I nie ma czegoś takiego jak „przechowuj pozycje jako wektory”. Gry przechowują zarówno pozycje, jak i wektory jako listy składników skalarnych w określonym układzie współrzędnych. To nie czyni ich tym samym. Aby dokonać analogii: inty i zmiennoprzecinkowe są przechowywane jako lista bitów binarnych, ale oznaczają różne rzeczy i mają różne operacje.
Nathan Reed,

1
@Val Jesteś całkowicie poza bazą. Wektor nie jest [pozycja p, prędkość v]. Nie ma w nim zarówno punktu, jak i prędkości. To tylko [prędkość x, prędkość y, prędkość z] (dla wektora prędkości). Chodzi o to, że jest to inny rodzaj rzeczy niż [pozycja x, pozycja y, pozycja z].
Nathan Reed

7

Wektory naprawdę nie są takie złe. Jest tylko trochę matematyki, której ludzie nie znają.

Przede wszystkim wektor nie reprezentuje pozycji w przestrzeni. Jest to bardzo ważne pod względem koncepcyjnym. Wektor reprezentuje kierunek, taki jak „Północ” i wielkość. Na mapie o normalnych współrzędnych matematycznych XY „północ” będzie wektorem (0,1) (w górę na osi Y). Nie należy tego mylić z pozycją (0,1), która jest o jedną jednostkę powyżej, gdziekolwiek umieścisz początek. Wektor jest kierunkiem i wielkością .

Przemieszczenie (ruch) jest wektorem (podobnie jak przesunięcie dwóch jednostek w górę i jednej jednostki w prawo), Pozycja nie.

Wektory same w sobie nie są tym, z czym ludzie mają problem. Zwykle są to macierze i operacje na wektorach.

Na przykład, jeśli pomnożysz wektor przez specjalną macierz zwaną „macierzą obrotu”, wektor zostanie obrócony o wartość określoną przez macierz. Ponadto niektóre osoby mają problemy z mnożeniem macierzy. Spójrz na to, jeśli go nie znasz.

Ponadto można łączyć te macierze (lub operacje) razem. Podobnie jak Obrót o 90 stopni wokół osi X, a następnie Obrót o 90 stopni wokół osi Y. Jeśli nazwiemy pierwszą macierz M, a drugą macierz N, wówczas operacją byłoby v * M * N. Jednak mnożenie macierzy nie jest przemienne, więc to nie to samo, co v * N * M.

W programowaniu graficznym regularnie wykonujesz znacznie bardziej skomplikowane operacje na wektorach i innych macierzach. Transformacje FoV i umieszczenie współrzędnych w przestrzeni ekranu itp. To naprawdę nie jest takie złe, ale może być zastraszające dla nowych ludzi.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.