2010-11-12 23 views
5

Dans mon code:Pourquoi Math.Cos renvoie-t-il la mauvaise valeur?

Vector2 colCircle = new Vector2(); 

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

Alors:

R = 22.627 
D = 89.214 

Lorsque vérifié sur ma calculatrice, la valeur X est correcte, mais la valeur Y doit être -0,310 mais dans le programme, il est -7,134.

Des idées pourquoi?

+1

Je ne peux pas dupliquer vos valeurs, mais il peut être utile de savoir que les fonctions trig .net (comme dans la plupart des implémentations de bibliothèque mathématique) attendent des paramètres d'angle en radians. – warrenm

+0

Je pense que c'est intéressant de voir à quel point la valeur des programmes X était proche de celle des radians. – Bloodyaugust

+0

_Je pense qu'il est intéressant de voir à quel point la valeur des programmes X était proche de celle des radians._ La fonction sinus est maximale, '+ 1', à l'angle' 28.5 * π' radians exactement. C'est '89.535' radians. –

Répondre

23

Les fonctions trigonométriques exigent des radians et non des degrés.

+0

En effet. Ugh ... C'est complètement idiot de moi. – Bloodyaugust

+1

Oui - 2 Pi (rad) = 360 (degrés) – Marco

+0

Alors pourquoi Math.Cos (90 * Math.Pi/180) renvoie une valeur * étrange au lieu de 0? –

4

Remplacer ce que vous avez avec

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

et vous devriez être bien. Cos/Sin attendent des radians non des degrés.

+2

En fait, MathHelper.ToRadians était plus rapide à implémenter. – Bloodyaugust