Les concepteurs OpenGL n'ont jamais eu peur des mathématiques et la connaissance de l'algèbre linéaire est essentielle pour toutes les applications OpenGL les plus simples. Je pense que cela peut être supposé en toute sécurité que les programmeurs OpenGL connaissent des angles dans les radians.
Mathématiquement, les radians sont plus élégants que de degrés à tous égards. Ils ont également des avantages pratiques:
Pourquoi, alors les concepteurs OpenGL ont-ils décidé de spécifier des fonctions telles que glRotatef
et gluPerspective
pour utiliser des degrés?
(Je sais que ce n'est aucune importance pratique et ça ne changera de toute façon pas. Je suis juste curieux, et je ne pouvais pas trouver la réponse sur OpenGL.org.)
Parce que les personnes normales sont plus utilisées pour calculer degrés - OpenGL est destinée à être utilisée simple. Notez que toutes les fonctions qui fonctionnent sur les degrés sont des fonctions "de haut niveau".
Pour OpenGL elle-même, ce n'est pas une différence si elle reçoit des radians ou de degrés - ils sont convertis en interne à des matrices de transformation de toute façon, il n'y a donc pas de gain informatique d'utiliser l'une ou l'autre.
Alors, pourquoi compliquer les choses pour les personnes si vous pouvez leur permettre d'utiliser des degrés? Toute personne codant sérieusement à OpenGL fournira à ses propres matrices calculées de Quaternions de toute façon.
Dans le même esprit que nous pourrions demander, pourquoi avoir glRotatef
et gluPerspective
de toute façon, car les matrices sont plus élégantes à tous égards et permettent une qualité de contrôle plus élevée.
Point par point:
Note également : Toutes les fonctions utilisant des degrés sont dans la norme actuelle (3.2) obsolète. glRotatef
est la fonction seulement Fonction prenant des degrés, ou en fait, un angle du tout. GL est une bibliothèque de services publics non destinée à un déploiement robuste, il est donc adapté à la lisibilité, et gluPerspective(... 60.0f..)
est beaucoup plus lisible et "standard" en termes de fourniture de FOV que gluPerspective( ... M_PI / 3.0f ... )
serait.
Notes finales:
Je dirais que depuis que OpenGL a été conçu avec l'utilisateur final à l'esprit, des diplômes ont été utilisés car on peut spécifier des angles importants (90
, 180
, 270
...) avec des entiers seulement, et il n'y a donc pas besoin d'un point flottant GL_PI
constant.
Je pense que c'est parce que vous devriez pouvoir obtenir une matrice de rotation exacte à certains angles comme 90 ou 180 degrés. Comme les autres personnes ici ont spécifié, si vous utilisez PI/2 au lieu de 90 degrés, des erreurs d'arrondies peuvent conduire à une matrice de transformation qui presque effectue une rotation de 90 degrés.
Le code est plus facile à lire, il facilite la courbe d'apprentissage des débutants et permet un piratage rapide.
Comme indiqué déjà - degrés ont un avantage - les humains sont mieux utilisés pour desgrés, comparer: 0.78539816339744830961566084581988 ... à 45 degrés par exemple: /.
Pour les utilisations avancées de OpenGL, vous fournissez de toute façon vos propres matrices.
Eh bien, ce qui se passe dans la plupart des cas, c'est que vous utilisez une bibliothèque de mathématiques pour convertir des radians en degrés et en arrière aux radians. Je suis d'accord avec la plupart de ce qui a été dit par les précédentes affiches géniales.
C'est plus humain lisible.