Convertisseur de mesures d'angles

0/5 (6 avis)

Snippet vu 32 218 fois - Téléchargée 30 fois

Contenu du snippet

Voici ce que je pourrais appeler un «convertisseur de mesures d'angles». Par exemple, convertir x° en radians ou en grad, et vice-versa. Son utilisation est simple: indiquer une valeur à convertir ainsi que son unité de mesure, indiquer l'unité de mesure dans laquelle on veut convertir la valeur, reste qu'à cliquer sur "Convertir la valeur" et le tour est joué :)

Source / Exemple :


<html>
<title>:: Convertisseur de mesures d'angles ::</title>

<script language=JavaScript>
<!--
window.resizeTo(400, 100)

var totalList = [360, 2*Math.PI, 400] // La mesure d'un angle complet en degré, en radians et en grad.

function mainFunc() {
   var v1 = GE("value1").value
   if (v1 == "") { // Si le champs est vide, donner la valeur zéro
      v1 = "0"
   }

   if (v1.lastIndexOf("0") == 0 && parseFloat(v1) >= 1) { // Enlever le zéro au début si v1 >= 1
      v1 = v1.substring(1, v1.length)
   }

   GE("value1").value = v1

   var n = parseFloat(v1) // La mesure de l'angle à convertir
   var type1 = GE("type1").selectedIndex // L'unité de l'angle à convertir
   var type2 = GE("type2").selectedIndex // L'unité de l'angle équivalent que l'on cherche

   GE("value2").value = convert(n, totalList[type1], totalList[type2])
}

function convert(n, total1, total2) {
   return (n*total2)/total1
}

function GE(id) { // Pour raccourcir le code, tout simplement :)
   return document.getElementById(id)
}
//-->
</script>

<body bgcolor=#eeeeee><center>

<form>
<input type=text onkeyup=mainFunc() id=value1 size=10>
<select id=type1 onclick=mainFunc()>
   <option value=0>Deg</option>
   <option value=1>Rad</option>
   <option value=2>Grad</option>
</select>

 = 

<input type=text onkeyup=mainFunc() id=value2 size=10 style=background-color:black;color:white; readonly>
<select id=type2 onclick=mainFunc()>
   <option value=0>Deg</option>
   <option value=1>Rad</option>
   <option value=2>Grad</option>
</select>

<br>
</form>

</center></body>
</html>

Conclusion :


Je me suis basé sur un fait: pour que 2 angles soit identiques, le rapport entre la mesure de l'angle et celle d'un angle complet doit être constant. On a donc les égalités suivantes: a°/360° = b rad/2pi rad = c grad/400 grad. À partir de cette égalité, si on connais une seule valeur, il est facile de déduire les autres. Voilà en gros le fonctionnement de mon code.

Petit problème de précision, on ne peut pas exprimer les valeurs en fractions..

PS: J'ai testé mon code seulement sur IE 6, il se peut qu'il y ait des incompatibilités avec d'autres navigateurs. Désolé si cela se produit, la portabilité n'est pas mon fort.. ;)

A voir également

Ajouter un commentaire Commentaires
FasteX_ Messages postés 44 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 29 février 2008
12 mars 2006 à 23:43
J'ai modifié certains éléments du code: inversion des couleurs dans le 2eme champs de texte pour le différencier de l'autre, tout se fait automatique lorsqu'on entre un chiffre ou qu'on change un unité, et une redimension pour que ce soit compact en application (.hta)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 mars 2006 à 23:35
mais j'ai montré un principe, on peut de la même façon produire un code plus court et légèrement plus compréhensible en utilisant ma méthode...
FasteX_ Messages postés 44 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 29 février 2008
12 mars 2006 à 23:09
De ta facon, on ne peut convertir que les degrés en radians, et les radians en degré. Mon code est fait pour s'adapté au nombre d'unités de mesure et pouvoir convertir chacune de ces unités en une autre... ou la même, haha.

Je ne veux surtout pas harceler les utilisateurs avec des alertes, dont le contenu ne peut d'ailleur pas être copié-collé. Peut-être qu'écrire automatiquement l'équivalent dans l'autre champs de texte à l'entrée d'un chiffre ou au changement d'une unité de mesure serait efficace... Je vais voir ce que je peux améliorer, merci tout de même :)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 mars 2006 à 21:42

FasteX_ Messages postés 44 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 29 février 2008
12 mars 2006 à 20:58
Le mot "main" n'est pas réservé en javascript, alors ce n'est que pour indiqué que c'est la fonction principale. Sinon, quelle est ton idée plus précisement?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.