Pourquoi les radians sont-ils préférés aux degrés dans le développement de jeux?


39

J'ai examiné la définition des radians et découvert que les mathématiciens les préféraient parce qu'ils dérivent de pi au lieu d'être complètement arbitraires comme des degrés.

Cependant, je n'ai pas trouvé de raison convaincante de les utiliser dans le développement de jeux, probablement en raison de mon manque total de compréhension mathématique. Je sais que la plupart des fonctions péché / cos / bronzage fonctionnent dans des langues appelées radians, mais quelqu'un pourrait tout aussi bien créer des fonctions de bibliothèque en degrés (et éviter les erreurs d'arrondi inhérentes à l'utilisation de pi).

Je ne veux pas que ce soit un sondage d'opinion, je voudrais juste entendre des personnes qui ont développé le jeu (et la recherche mathématique associée) où les radians offrent une expérience supérieure aux diplômes, par opposition à "Nous utilisons radians parce que nous les avons toujours utilisées ", juste pour m'aider (et éventuellement les autres) à comprendre à quoi elles servent.


2
Une réponse est qu'ils sont plus rapides. Vous n'avez pas besoin de convertir des degrés en radians avant de les utiliser dans des fonctions comme le péché. Je devrais être plus spécifique et dire qu'une méthode de calcul de sin (x) utilise un développement de Taylor - et que "x" doit être exprimé en radians pour le développement.
user3728501

Réponses:


49

Les radians sont utilisés en mathématiques parce que

  1. Ils mesurent la longueur de l'arc sur le cercle, c'est-à-dire qu'un arc d'angle thêta sur un cercle de rayon r est juste r * thêta (par opposition à pi / 180 * r * thêta).
  2. Lorsque les fonctions trigonométriques sont définies en termes de radians, elles obéissent à des relations plus simples, telles que le cosinus étant la dérivée du sinus ou sin (x) ~ = x pour le petit x. Si elle est définie en termes de degrés, la dérivée du sinus serait pi / 180 * cosinus, et nous aurions sin (x) ~ = pi / 180 * x pour un petit x.

Ce n'est pas que les mathématiciens comme Pi. Les radians sont en fait un choix plus naturel de mesure d’angle que de degrés, pour les raisons susmentionnées. Ils sont la mesure de l'angle dans laquelle des facteurs tels que pi / 180 disparaissent.

Donc, OMI, la question n'est pas "pourquoi utiliser des radians", mais "pourquoi ne pas utiliser des radians". En d'autres termes, il n'est pas nécessaire d'avoir une raison d'utiliser des radians; ils sont le choix par défaut de la mesure d'angle. Il faut une raison pour utiliser les diplômes. Par exemple, vous pouvez choisir d'afficher les angles en degrés dans l'interface utilisateur d'une application, car ils sont plus familiers à de nombreuses personnes (notamment les artistes). Cependant, personnellement, je me suis habitué à penser aux angles en radians plutôt qu'en degrés.

Je n'ai pas d'exemples spécifiques de gamedev à vous donner, car il ne s'agit pas vraiment d'un problème de gamedev, mais d'un problème mathématique, qui serait identique dans tous les domaines utilisant les mathématiques.

(Au fait, il n'y a pas plus d'erreurs inhérentes à l'arrondi lors de l'utilisation de pi que lors de l'utilisation de degrés ... les angles doivent toujours être des nombres réels et non des entiers, sinon comment allez-vous représenter un angle d'un demi-degré? :) )


4
D'accord avec ce qui précède. J'ajouterai que j'ai déjà vu une bibliothèque de jeux qui utilisait son propre standard, basé sur 256e de cercle. La raison semblait être que leurs fonctions trigonométriques utilisaient une table de correspondance avec 256 entrées et interpolées entre elles. Si vous ne le faites pas, mais calculez péché / cos / bronzage à partir de leurs développements en série, ou utilisez les instructions FSIN / FCOS sur une FPU (la plupart du temps), elles attendront toutes les deux une entrée en radians - vous enregistrez ainsi la conversion en conservant en radians tout au long.
DMGregory

11
"pourquoi ne pas utiliser les radians" - je suis prêt à parier que la seule bonne réponse à cela est "parce que les devoirs de 4e année seraient un cauchemar avec des radians", ce qui est probablement la seule raison pour laquelle nous n'avons même jamais entendu parler de diplômes. :)
Sean Middleditch

5
@SeanMiddleditch Les classes de 4e année doivent migrer vers Tau . Tau est la version radian de 360. Il simplifie le calcul et les professionnels doivent également commencer à l'adopter.
Val

2
256ème de cercle ou 16384ème de cercle signifie que vous pouvez utiliser des octets non signés ou des nombres 16 bits, respectivement, et les débordements / débordements d'ajouts / soustractions font ce qu'il faut. Avec les radians, vous finissez probablement par utiliser une virgule flottante, ce qui signifie que plus vous obtenez de précision, plus l'angle est proche de zéro et moins il s'éloigne, ce qui est un peu inutile / ridicule la plupart du temps.
Rjmunro

2
@ Val: Tau ne résout pas les mêmes problèmes que les degrés. Les degrés permettent de mesurer facilement des angles relativement petits avec des nombres entiers. Ceci est important lorsque vous essayez d'enseigner la géométrie précoce lorsque les étudiants font toujours tout à la main et ne sont pas très à l'aise avec les fractions. Considérez les problèmes habituels d ’« angle d’aiguille »des élèves et expliquez comment ceux-ci correspondent clairement aux degrés mais pas aux radians Pi / Tau. Ceci est similaire à la raison pour laquelle les degrés étaient à un moment populaires dans les jeux: utiliser une table de correspondance des degrés était plus facile / plus rapide (à l'époque) et donnait une résolution "assez bonne" pour leurs besoins.
Sean Middleditch

4

La réponse de Nathan est très concrète. Je voudrais fournir une vue plus générale:

Le concept mathématique le plus complexe mis en œuvre de manière native dans la plupart des unités de traitement est constitué par les nombres à virgule flottante en tant que modèles pour le champ des nombres réels. La géométrie visuelle est basée sur l'espace vectoriel réel tridimensionnel ³. Les coordonnées sont des nombres réels. Les quantités géométriques sont basées sur la longueur , qui est un multiple réel d'une unité.

En raison de cette base en nombres réels et en longueurs, il est pratique de modéliser également des angles par des nombres réels resp. longueurs. Radians est la longueur de l'arc d'un cercle unitaire avec l'angle donné. C'est donc le modèle d'un angle le plus compatible avec toutes ces autres unités basé sur des nombres réels resp. longueurs. Par exemple, l'approximation sin x ~ x pour les petites valeurs de x est une approximation de la coordonnée y d'un point du cercle unité par l'arc de l'axe des x à ce point.

Il ne faut pas oublier qu'un angle n'est pas une longueur. C'est l'une des 4 parties d'un plan créé par deux lignes droites sécantes. Sa quantité est délimitée par la symétrie des plans dans ³ et la métrique euclidienne.

Il est plus naturel de modéliser un angle avec l'intervalle semi-ouvert [0,1) (ou (0,1]) collé à ses extrémités, étant donné la valeur d'un angle dans le cadre d'un virage complet. Les degrés ne sont que 1 / 360 tours complets (BTW: Nombre théoriquement, il s’agit d’un meilleur choix que le système décimal utilisé pour les nombres réels).


0

Bien que j'utilise aussi les radians, pour toutes les raisons précisées, il existe au moins une bonne raison de préférer les degrés: précision et accumulation d'erreurs. Faire tourner un cercle complet d'un degré à la fois est exact. Faire pivoter d'un cercle complet 2PI / 360 radians à la fois ne l'est pas. Effectuer une rotation de 90 degrés 4 fois sur une grille de pixels vous permet de revenir exactement à votre point de départ. Effectuer une rotation 2PI / 4 radians sur une grille de pixels 4 fois ne le fait pas.


En testant cela empiriquement, après quatre rotations de 90 degrés avec un incrément de flottement de précision en radians, je trouve une erreur totale de 1,75E-7 (moins de 1 partie sur 5 millions). Sur une grille de pixels, le rayon de l'objet / du cadre en rotation doit être compris dans les millions de pixels avant de rencontrer un pixel d'erreur au bord extérieur (point situé à plus de 0,5 pixel linéaire de l'endroit où il devrait se trouver). En d'autres termes, il est peu probable que la perte de précision pose un problème dans la pratique (surtout si vous utilisez des doublons).
DMGregory

D'un point de vue numérique, vous avez raison, mais d'un point de vue visuel, si UN pixel d'un bord net apparaît à la mauvaise valeur, vous êtes foutu.
ddyer

Voir la note "millions de pixels" ci-dessus. Pour les images-objets de tailles typiques (par exemple, de l'ordre de 2048 pixels de large ou moins), l'erreur sera sensiblement inférieure à un demi-pixel et sera donc effacée par l'arrondi inhérent de la grille de pixels elle-même. Notez également que la rotation de 360/7 degrés à la fois accumulera les mêmes erreurs. Vous pouvez éliminer les erreurs d'arrondi avec les deux systèmes en vous en tenant à des incréments représentables sous la forme d'une somme de puissances de deux (avec une limite d'exposant), mais il est probablement plus facile de passer à un code qui n'accumule pas beaucoup d'incréments.
DMGregory

@DMGregory C'est ce que je voulais dire par "erreur d'arrondi inhérente avec Pi". L'autre option consiste à ne pas utiliser des singles / doubles mais un moyen de représenter les nombres en facteurs (représentant ainsi 2 * pi / 360 non comme résultat du calcul, mais comme formule) et de calculer le résultat uniquement lorsque cela est nécessaire. Je ne sais pas si de "vrais" programmes le font, mais des choses comme Mathematica peuvent toujours représenter "1/3" par "1/3" au lieu de "0.333333 .....". Mais après avoir passé en revue les chiffres, je suppose que vous avez raison, l'erreur d'arrondi est là, mais insignifiante
Michael Stum

2
Un angle de 1 degré peut être plus facile à représenter avec précision en degrés qu'en radians, la rotation d'un objet n'étant pas exacte dans les deux cas, elle nécessite des fonctions trigonométriques. cos 1 ° est aussi sujet aux erreurs d'arrondi que pi / 180 .
Marcks Thomas

-3

Admettons qu'il est préférable de choisir laquelle et de s'en tenir que d'utiliser deux définitions et de deviner laquelle d'entre elles est nécessaire pour la fonction actuelle. Ensuite, l’utilisation de la longueur d’arc est plus naturelle pour l’implémentation de sin et cos, ce qui peut inciter cmath à l’appliquer de cette façon. Comme les jeux sont souvent écrits en C ++ ou en C et qu'il y a déjà péché et que cos est implémenté, il est logique de s'en tenir à cette définition.

[Voyez-vous legs opengl]


Ce n'est pas vraiment répondre à la question. Vouliez-vous commenter une autre réponse à la place?
Josh
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.