2008-10-13 5 views
5

Je prévois de faire mon prochain projet en C# plutôt qu'en C++ (en utilisant SlimDX).C# - Existe-t-il une bibliothèque mathématique flottante 32 bits?

Tout DirectX utilise des flottants, mais System.Math utilise des doubles. Cela signifie une conversion constante entre les flotteurs et les doubles.

Donc, idéalement, je voudrais écrire tout le code en utilisant des flotteurs, puisque je ne reçois aucune précision supplémentaire à la conversion flotte de doubles tout le temps ... de toute façon

Cependant Ive été incapable de trouver un ensemble de fonctions mathématiques pour .net qui utilise des flottants. Je pourrais bien sûr écrire ma propre bibliothèque en C#, mais je préfère utiliser une bibliothèque existante qui a été optimisée etc ...

+0

Il y a un problème sur github demandant que cela pour corelcr: [https://github.com/dotnet/corefx/issues/1151] (https://github.com/dotnet/corefx/ issues/1151). – ghord

Répondre

2

XNA fournit plusieurs constantes mathématiques (y compris les spécialistes 3D, comme PI/2 etc.) et certaines avancées fonctions mathématiques avec une précision flottante (mais pas les fonctions trigonométriques). Bien que ce ne soit probablement pas une option pour vous, étant donné que XNA n'est pas aussi mince que SlimDX, cela signifie certainement que System.Math manque réellement quelque chose, ou que la performance n'est pas si importante. Dans mon expérience, vous ne calculez pas vraiment cela pour vous-même, car la plupart de cela est gérée soit par les classes de géométrie (Matrix, Quaternion, Vector) ou le GPU lui-même. De ce point de vue, j'examinerais dans SlimDX ce qu'ils fournissent. On dirait que les choses typiques comme les matrices, les vecteurs, les quaternions (et même les flotteurs de 16 bits) sont déjà là. S'il vous manque des constantes avec des précisions flottantes, il suffit de les créer vous-même (ne pas avoir la distribution à faire à chaque fois, juste au démarrage).

1

Oui, vous obtiendrez des gains de performance très significatifs en travaillant de bout en bout dans des flottants si c'est toute la précision requise.

Consultez les bibliothèques NMath à partir du logiciel CenterSpace. Les types flottant, double et complexe sont systématiquement pris en charge dans toute la bibliothèque.

Paul

+0

Bien que le coût des conversions ne soit pas négligeable, les gains de performance dépendent beaucoup de la fréquence à laquelle il effectue les opérations. J'ai utilisé la version System.Math de Sin/Cos etc, mais je ne les utilise qu'une poignée de fois par mouvement de caméra, ce qui signifie que je ne gagnerais même pas une image par seconde en changeant de librairies. Toutefois, si vous effectuez des opérations flottantes intenses en tant que charge de travail principale (par exemple, la génération de terrain procédurale sur le processeur), il est conseillé de les faire avec une telle bibliothèque. – Guvante

Questions connexes