Aller, un petit topo sur les angles !
Comme vous l'avez peut-être constaté les calculs trigos effectués par nos merveilleuses machines sont basés sur les radians. A savoir :
- 360 Degrés = 400 grades = 2*Pi
En topo on utilise en général les grades pour le gisement parce que c'est plus facile. Quand on se place sur un point et que décide qu'en face, c'est 0 grades, on a pas besoin de calculs complexes pour savoir qu'a gauche, c'est 100, a droite 300 et derrière 200. Vous me direz que 90, 180, 270 c'est pareil. Mais 1 quart a droite devient 50, trois quart droite devient 150, trois quart gauche devient 250 et un quart gauche devient 350. Vous pouvez me donner le résultat en degrés sans calculer un petit peu ? (Oui, je sais : quand on a l'habitude de ces chiffres, c'est facile).
Aller, hop. Les conversions :
Convertir un angle de Radian vers Degré = AngleRadian/180*PI
Convertir un angle de Degré vers Radian = AngleDegré*180/PI
Pour les Grades, vous remplacez juste 180 part 200 :
Convertir un angle de Radian vers Grade = AngleRadian/200*PI
Convertir un angle de Grade vers Radian = AngleGrade*200/PI
Convertir un angle de Degré vers Grade = AngleDegré/0.9
Convertir un angle de Grade versDegré = AngleGrade*0.9
Hors ligne
sympa car on est tous à un moment donné parti à la recherche de ses infos oubliées avec le temps...
Hors ligne
Toujours pratique car il est vrai que même quand on a l'habitude on fait des erreurs (du genre j'inverse le 180/PI) qui causent de grave soucis.
Maintenant moi je trouve ni les degrés ni les grades faciles Toutes les formules de maths sont tellement plus évidentes en radians.
Hors ligne
DeusXL a bien raison : les radians sont la seule référence sérieuse en trigonométrie et dans toutes les sciences s'en servant (physique donc). Et j'irai même plus loin : si les formules de maths sont "plus évidentes en radians", c'est tout simplement que c'est la seule graduation valable d'un point de vue théorique. Les degrés et les grades ne sont que des artefacts hérités d'une époque où la trigo servait à construire des maisons, intellectuellement on manipule plus aisément des nombres de l'ordre 10 (le cerveau préfère les entiers).
Ne vous embarassez pas des degrés ou des grades sauf pour renseigner l'utilisateur humain d'un angle. Et à ce moment-là faites la conversion en degrés.
Pour les considérations de précision, il est inutile d'aller chercher les nombreuses décimales, un short fera bien l'affaire. Exprimé en radians, un angle vaudra entre -PI et +PI et on ne cherchera pas souvent une précision supérieure à 10-2 pour les calculs.
Malheureusement, bon nombre d'outils travaillent en degrés, et si je me souviens bien (à vérifier), irrlicht travaille en degré...
désolé pour ce petit up de sujet
fred
Hors ligne
Toute la programmation 3D se fait en radian, que ce soit au niveau de la carte graphique ou au niveau software...
D'ailleurs la carte graphique ne travaille qu'avec des nombres à virgule flottante... C'est pour cela qu'elle est bien plus rapide que le CPU pour ce genre de choses.
Maintenant on fournit souvent des routines pour utiliser les degrés car ils semblent souvent plus simples (et ça donne l'impression d'être plus précis :p) mais de toute façon, ce ne sont que des conversions des outils en radian.
PS : Un short signé est entre -32767 et 32767 donc cela équivaut à une précision de 10^(-4) non ? Même si l'utilisation des float est de loin la plus évidente, relativement au fonctionnement du GPU.
Hors ligne
Oui pardon pour le lapsus, un float
Hors ligne
Il est bien évident qu'au niveau programmation je travaille uniquement en radian ne serait-ce que pour des raisons de performances. Ce n'est que pour renseigner l'utilisateur que je met en degrés. Ce serait quand même idiot de chercher la performance et de mettre des conversions radians/degrés partout !
Hors ligne
ptitfred :
Oui pardon pour le lapsus, un float
Enfin ce que tu as dit sur les short, ça peut être vrai aussi :p
Par exemple, quand on doit transmettre un angle sur le réseau (sisi ça arrive, cf le protocole de DAoC, le jeu que je connais le mieux de ce point de vue) on utilise un short qui apporte une précision de 10^(-4) lorsqu'on veut se situer entre -PI et +PI et qui se code en deux octets (un double par exemple c'est 64 bits donc 8 octets, et un float je crois que c'est 32 bits donc 4 octets).
Dernière modification par DeusXL (03-03-2007 15:56:31)
Hors ligne