2009-06-25 15 views
18

W C funkcja atan2 ma następujący podpis:Dlaczego argumenty atan2 Y, X zamiast X, Y?

double atan2(double y, double x); 

Inne języki to zrobić również. Jest to jedyna funkcja, jaką znam, która przyjmuje argumenty w porządku Y, X, a nie w porządku X, Y, i regularnie mnie podrywa, ponieważ kiedy myślę o współrzędnych, myślę (X, Y).

Czy ktoś wie, dlaczego konwencja argumentów zlecenia atan2 jest w ten sposób?

+0

Dlaczego jest on oznaczony jako nieobowiązujący język? –

+0

@mgroves Zdarza się w wielu językach –

+0

Ponieważ ten sam format występuje w wielu językach. Z wpisu wiki atan2: "Sięga co najmniej aż do języka programowania FORTRAN i znajduje się obecnie w standardowej bibliotece math.h języka C, bibliotece Java Math, klasie statycznej matematyki C# i gdzie indziej. Języki, takie jak Perl, zawierają funkcję atan2 w stylu C. [1] " – CookieOfFortune

Odpowiedz

23

Ponieważ uważam, że jest to związane z arctan (r/x), więc y pojawia się na górze.

Oto miły Link mówić o tym trochę: Angles and Directions

+0

Jakiś programista w mgle czasu zdecydował, że ma to sens. (Dlaczego akurat to "atan2"? Dlaczego nie "angle_for"? Myślałem, że to arctangent-squared ...) –

+0

Myślę, że to ma sens ... – CookieOfFortune

+2

Tak, arctan (y/x) się dzieje tak często, że jeśli arctan2 wziął x, y to by mnie zepsuło cały czas.Miło jest po prostu zmienić ukośnik na przecinek. – Nosredna

11

Moje założenie było zawsze, że to dlatego, że z definicji wyzwalania, tzn

tan(theta) = opposite/adjacent 

Podczas pracy z kanonicznej kątem od pochodzenie, naprzeciwko jest zawsze Y i X jest zawsze w sąsiedztwie, więc:

atan2(opposite, adjacent) = theta 

Ie, to było zrobione w ten sposób, więc nie ma zamieszania zamawianie z re spektrum do definicji matematycznej.

+2

wzrost nad biegiem .... – jlarson

+0

Soh Cah Toa jest moim pseudonimem :) –

+0

Dobra geometria 7th grade, wciąż go używam. – CookieOfFortune

1

Załóżmy trójkąt prostokątny z przeciwległej strony nazwie Y, przy bocznych nazwie x:

tan (k) = y/x

arctg (tg (k)) = arctg (Y/X)

0

to dlatego, że w szkole, Mnemonic obliczania gradientu
jest wzrost na metę, lub innymi słowy dy/dx, lub krócej y/x.

Ta kolejność wkradła się do argumentów funkcji arcus tangens.

To jest historyczny artefakt. Dla mnie to zależy od tego, o czym myślę
o tym, kiedy używam atan2. Jeśli myślę o mechanizmach różnicowych, mam rację:
i jeśli myślę o parach współrzędnych, źle rozumiem.

+0

Zastanawiam się, czy byłoby bardziej jasne, czy zmienne zostały oznaczone jako dx i dy? – CookieOfFortune

Powiązane problemy