2010-11-12 19 views
5

En mi código:¿Por qué Math.Cos devuelve el valor incorrecto?

Vector2 colCircle = new Vector2(); 

colCircle = new Vector2((R * Math.Sin(D)), -(R * Math.Cos(D))); 

bien:

R = 22.627 
D = 89.214 

Cuando comprobó en mi calculadora, el valor de X es correcto, pero el valor de Y debe ser -0.310 pero en el programa es -7,134.

¿Alguna idea de por qué?

+1

No puedo duplicar sus valores, pero podría ser útil saber que las funciones .net trig (como en la mayoría de las implementaciones de la biblioteca matemática) esperan parámetros de ángulo en radianes. – warrenm

+0

Creo que es interesante lo cerca que estaba el valor de los programas X del real con radianes. – Bloodyaugust

+0

_Creo que es interesante lo cerca que estaba el valor X de los programas del real con radianes._ La función seno es máxima, '+ 1', en el ángulo' 28.5 * π' radianes exactamente. Eso es '89.535' radianes. –

Respuesta

23

Las funciones trigonométricas esperan radianes, no grados.

+0

De hecho. Uf ... Eso es completamente tonto de mi parte. – Bloodyaugust

+1

Sí - 2 Pi (rad) = 360 (grados) – Marco

+0

¿Por qué Math.Cos (90 * Math.Pi/180) devuelve algún * valor extraño en lugar de 0? –

4

Reemplazar lo que tienes con

colCircle = new Vector2((R * Math.Sin(D*Math.PI/180.0)), -(R * Math.Cos(D*Math.PI/180.0))); 

y que debe estar bien. Cos/Sin esperan radianes, no grados.

+2

En realidad, MathHelper.ToRadians fue más rápido de implementar. – Bloodyaugust

Cuestiones relacionadas