10
votes

C # math vs. xna mathhelper

Depuis que je devais travailler avec pi (3.1415 ...) en C # J'ai utilisé Math.PI pour obtenir la valeur. Habituellement, je voudrais simplement utiliser des valeurs telles que math.pi / 2.0 ou 2.0 * math.pi , mais je viens de remarquer que XNA fournit une classe MathHelper. La bonne chose à propos de ceci est que je peux appeler mathhelper.piover2 et mathhelper.twopi , faisant ainsi une étape extrêmement triviale encore plus triviale. ; -)

J'ai supposé que ces deux classes étaient interchangeables, mais j'ai remarqué que math.pi / 2.0! = Mathhelper.Piover2 . J'ai essayé de rechercher pourquoi ce serait, mais je n'ai rien trouvé. Alors, je pensais que je voudrais essayer ma chance ici. En ce qui concerne l'utilisation de PI, existe-t-il des différences entre la classe de mathématiques et la classe MathHelper? Est-ce que l'on préfère sur l'autre? Ou devrais-je juste partir assez bien seul et assurez-vous simplement d'utiliser systématiquement l'un ou l'autre tout au long de mon programme?


1 commentaires

Je serais surpris si Mathhelper n'appelle pas Math.Pi dans les coulisses.


3 Réponses :



8
votes

regarder au chiffre:

3,141592653589790000000000000000000 // MATH.PI

3,1415930000000000000000000000000 // MathHelper.PI

3,1415926535897932384626433832795 // PI de Windows Calc


1,570796326794900000000000000000000 // MATH.PI / 2

1,570796370506290000000000000000000 // mathhelper.piover2

1,570796000000000000000000000000000 // mathhelper.pi / 2

1,5707963267948966192313216916398 // PI / 2 de Windows Calc


Explication du problème: la perte de précision

meilleur pi / 2 = math.pi / 2


0 commentaires

3
votes

meilleur pi / 2 n'est pas math.pi / 2!

Dans le développement de jeux N'utilisez pas la constante Math.PI, la perte de précision est négligeable, vous ne verrez pas la différence dans le mouvement de vos objets de jeu ... la performance est plus importante. L'utilisation de MathHelper.Piover2 vous fera économiser une double division et une conversion double à flotter. Cela pourrait sembler très peu d'aide, mais il existe des problèmes de calcul intensive (systèmes de particules) lorsque la différence est importante.


0 commentaires