2009-06-25 31 views
18

atan2関数のシグネチャは次のとおりです。なぜatan2 Y、XではなくX、Yに引数がありますか? Cでは

double atan2(double y, double x); 

他の言語も同様にこれを行います。これは私が知っている唯一の関数で、X、YオーダーではなくY、Xオーダーで引数をとり、座標を考えると(X、Y)と思うので定期的に私を壊します。

atan2の引数の順序の規則がこのような理由は誰にも分かりますか?

+0

なぜこのタグは言語に依存しないものですか? –

+0

@mgroves多くの言語で起こる –

+0

同じフォーマットが多くの言語で表示されるためです。 atan2 wikiのエントリーから:「少なくともFORTRANプログラミング言語にまでさかのぼり、現在はCプログラミング言語のmath.h標準ライブラリ、Java Mathライブラリ、C#静的Mathクラス、およびその他の場所で使用されています。 Perlのような言語には、Cスタイルのatan2関数が含まれています。[1] " – CookieOfFortune

答えて

23

私はarctan(y/x)に関連していると信じているので、yが上に表示されます。ここで

はそれについて少し話して素敵なリンクです: Angles and Directions

+0

時間の霧の中にいるプログラマーの中には、そんな意味合いがあると決めた人もいます。 (なぜそれは 'atan2'なのですか? 'angle_forはなぜですか?私はそれが逆正接であったと思っていました...) –

+0

私はそれがかなり意味があると思う... – CookieOfFortune

+2

うん、arctan arctan2がx、yを取った場合、それは常に私を台無しにするでしょう。スラッシュをコンマに変更するといいですね。 – Nosredna

11

から正準角を操作するときは私の仮定は、常にその

tan(theta) = opposite/adjacent 

すなわち、これが原因で三角定義であるとされています原点は、反対常にYであると隣接するので、常にXです:再とは順序の混乱がないよう

atan2(opposite, adjacent) = theta 

すなわち、それはそのように行われていました数学的定義へのスペクトル。

+2

立ち上がりが.... – jlarson

+0

Soh Cah Toaは私のニックネームです。 –

+0

good'ol 7th gradeジオメトリ、私はまだ時々使用します。 – CookieOfFortune

1

、Yと呼ばれる、その反対側の矩形の三角形を想定Xと呼ばれる隣接する側:Y/X

逆正接(黄褐色の(角度))=アークタンジェント(Y/X)=(角度)

黄褐色学校では、勾配を計算するためのニーモニックが
が実行オーバー上昇である、すなわちDY/DX、以上簡単にはY/Xであるため

0

それはです。

そして、この順序は、逆正接関数の引数にうんざりしています。

これは歴史的な人工物です。私にとっては、私が思っていることに依存します
私が使用するときは約atan2です。私が差異について考えているなら、私はそれを正しく得ます
私は座標ペアについて考えているなら、間違っています。

+0

変数がdxとdyとラベル付けされているかどうかはもっと分かりますか? – CookieOfFortune

関連する問題