2009-06-25 16 views
18

En C la función atan2 tiene la siguiente firma:¿Por qué los argumentos son atan2 Y, X en lugar de X, Y?

double atan2(double y, double x); 

Otros idiomas que hacer eso también. Esta es la única función que conozco que toma sus argumentos en orden Y, X en lugar de orden X, Y, y me arruina regularmente porque cuando pienso en coordenadas, pienso (X, Y).

¿Alguien sabe por qué la convención de orden de argumentos de atan2 es esta?

+0

¿Por qué está etiquetado como agnóstico del lenguaje? –

+0

@mgroves Ocurre en muchos idiomas –

+0

Porque el mismo formato aparece en MUCHOS idiomas. De la entrada de wiki de atan2: "Data al menos hasta el lenguaje de programación FORTRAN y actualmente se encuentra en la biblioteca estándar math.h del lenguaje de programación C, la biblioteca Java Math, la clase matemática estática C# y en otros lugares. idiomas, como Perl, incluyen la función atan2 estilo C. [1] " – CookieOfFortune

Respuesta

23

Porque creo que está relacionado con arctan (y/x), por lo que y aparece en la parte superior.

Aquí es un buen enlace de hablar de ello un poco: Angles and Directions

+0

Algún programador en las brumas del tiempo decidió que tenía sentido de esa manera. (¿Y por qué es 'atan2'? ¿Por qué no 'angle_for'? Yo solía pensar que era arctangent-squared ...) –

+0

Creo que tiene mucho sentido ... – CookieOfFortune

+2

Sí, arctan (y/x) sucede tan a menudo que si arctan2 tomara x, y me arruinaría todo el tiempo.Es bueno simplemente cambiar la barra a una coma. – Nosredna

11

Mi hipótesis ha sido siempre que esto es debido a la definición de trigonometría, es decir, que

tan(theta) = opposite/adjacent 

Cuando se trabaja con el ángulo canónica de la origen, opuesto es siempre y y adyacente siempre es X, así que:

atan2(opposite, adjacent) = theta 

Ie, fue hecho de esa manera lo que no hay confusión de pedido con re spect a la definición matemática.

+2

subir de carrera .... – jlarson

+0

Soh Cah Toa es mi pnemonic :) –

+0

good'ol Geometría de 7º grado, todavía lo uso a veces. – CookieOfFortune

1

Supongamos que un triángulo rectángulo con su lado opuesto llamado y, lado adyacente llamado x:

tan (ángulo) = y/x

arctan (tan (ángulo)) = arctan (y/x)

0

es porque en la escuela, la tecla de acceso para calcular el gradiente
es subida más de correr, o en otras palabras dy/dx, o más brevemente y/x.

Y esta orden se ha colado en los argumentos de las funciones de arcotangente.

Es un artefacto histórico. Para mí, depende de lo que esté pensando
cuando uso atan2. Si estoy pensando en diferenciales, lo entiendo bien
y si estoy pensando en los pares de coordenadas, me equivoco.

+0

Me pregunto si sería más claro si las variables fueron etiquetadas dx y dy? – CookieOfFortune

Cuestiones relacionadas