Przyglądałem się definicji radianów i odkryłem, że matematycy wolą je, ponieważ pochodzą od pi, a nie są całkowicie arbitralne jak stopnie.
Jednak nie znalazłem przekonującego powodu, aby używać ich w rozwoju gier, prawdopodobnie z powodu mojego całkowitego braku powiązanego zrozumienia matematycznego. Wiem, że większość funkcji sin / cos / tan w językach to radian, ale ktoś równie dobrze mógłby tworzyć funkcje biblioteczne w stopniach (i unikać nieodłącznych błędów zaokrąglania podczas używania pi).
Nie chcę, żeby to była ankieta, chciałbym usłyszeć od ludzi, którzy opracowali grę (i związane z nią badania matematyczne), w których radianie oferują lepsze doświadczenie niż stopnie naukowe, w przeciwieństwie do „Używamy radianów ponieważ zawsze ich używaliśmy ”, tylko po to, aby pomóc mi (i ewentualnie innym) zrozumieć, do czego są dobrzy.
źródło
Odpowiedzi:
Radianów używa się w matematyce, ponieważ
To nie tak, że matematycy tak jak pi. Z powyższych powodów radiany są bardziej naturalnym wyborem miary kąta niż stopnie. Są to miary kąta, w których zanikają czynniki takie jak pi / 180.
IMO zatem nie brzmi „dlaczego korzystać z radianów”, ale „dlaczego nie używać radianów”. Innymi słowy, nie ma powodu, aby używać radianów; są domyślnym wyborem miary kąta. Potrzebny jest powód, aby używać stopni. Na przykład można wybrać wyświetlanie kątów w stopniach w interfejsie aplikacji, ponieważ są one bardziej znane wielu osobom (zwłaszcza artystom). Jednak osobiście przyzwyczaiłem się do myślenia o kątach raczej w radianach niż stopniach.
Nie mam żadnych konkretnych przykładów gamedev, które mogę podać, ponieważ nie jest to tak naprawdę problem gamedev, ale matematyczny i byłby taki sam w każdej dziedzinie wykorzystującej matematykę.
(Nawiasem mówiąc, nie ma więcej „nieodłącznych błędów zaokrąglania podczas używania pi” niż przy użyciu stopni ... kąty powinny zawsze być liczbami rzeczywistymi, a nie liczbami całkowitymi, w przeciwnym razie jak reprezentujesz kąt pół stopnia? :) )
źródło
Odpowiedź Nathana jest bardzo konkretna. Chciałbym przedstawić bardziej ogólny widok:
Najbardziej złożoną koncepcją matematyczną, która jest natywnie wdrażana w większości jednostek przetwarzających, są liczby zmiennoprzecinkowe jako modele dla pola liczb rzeczywistych ℝ. Geometria wizualna oparta jest na trójwymiarowej przestrzeni wektora rzeczywistego ℝ³. Współrzędne są liczbami rzeczywistymi. Wielkości geometryczne oparte są na długości , która jest rzeczywistą wielokrotnością jednostki.
Ze względu na tę bazę w liczbach rzeczywistych i długościach praktyczne jest również modelowanie kątów według liczb rzeczywistych lub. długości. Radian jest długością łuku koła jednostkowego o danym kącie. Jest to zatem model kąta najbardziej kompatybilny ze wszystkimi innymi jednostkami na podstawie liczb rzeczywistych lub. długości. Na przykład sin przybliżenia sin x ~ x dla małych wartości x jest przybliżeniem współrzędnej y punktu na okręgu jednostkowym przez łuk od osi x do tego punktu.
Nie należy zapominać, że kąt jest nie długość. Jest to jedna z 4 części płaszczyzny utworzonej przez dwie przecinające się linie proste. Jego ilość jest ograniczona przez symetrię płaszczyzn w ℝ³ i metrykę euklidesową.
Bardziej naturalne jest modelowanie kąta za pomocą przedziału półotwartego [0,1) (lub (0,1]) sklejonego razem w jego punktach końcowych, biorąc pod uwagę wartość kąta jako część pełnego obrotu. Stopnie są tylko 1 / 360 pełnego obrotu. (BTW: Teoretycznie liczba, jest to lepszy wybór niż system dziesiętny używany dla liczb rzeczywistych).
źródło
Chociaż używam także radianów, z wszystkich wymienionych powodów, istnieje co najmniej jeden dobry powód, dla którego preferowane są stopnie: Precyzja i kumulacja błędów. Obracanie o pełny okrąg o 1 stopień na raz jest dokładne. Obracanie przez pełny okrąg radianów 2PI / 360 jednocześnie nie jest. 4-krotne obrócenie o 90 stopni na siatce pikseli powoduje powrót do dokładnie tego, co zacząłeś. Wykonanie obrotu radianem 2PI / 4 na siatce pikseli 4 razy nie.
źródło
Zgódźmy się, że lepiej wybrać dowolną i trzymać się jej, niż używać dwóch definicji i nieco zgadywać, która z nich jest niezbędna dla bieżącej funkcji. Wtedy użycie długości łuku jest bardziej naturalne dla realizacji grzechu i cos, co może być powodem, dla którego cmath zastosuje go w ten sposób. Ponieważ gry są często pisane w C ++ lub C, a zaimplementowano już sin i cos, warto trzymać się tej definicji.
[Pieprz się starsze opengl]
źródło