Calcul de déflexion entre arc et corde

Soyez le premier à donner votre avis sur cette source.

Vue 2 848 fois - Téléchargée 193 fois

Description

Qui n'a pas été, au moins une fois dans sa vie, confronté à cet épineux problème géométrique: j'ai la longueur d'un arc, j'ai la corde, mais je n'ai pas le rayon (ou l'angle au centre) ni la flèche?

Cette feuille de calcul, qui existe chez moi depuis l'an 2000 et que j'ai conçue pour mon boulot, résout élégamment ce problème au moyen d'une boucle itérative en javascript.

Copiez/collez le code dans un éditeur de texte, et sauvez-le sous le nom "corde et arc.htm". Ensuite, double-cliquez.

Source / Exemple :


<head><title>Script de calcul pour corde et arc</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Averell">
<script type="text/javascript">

function calcule() {
var a=document.f.corde.value/2;
var b=document.f.arc.value/2;

if ((eps=document.f.eps.value)<=0) { alert('Epsilon doit etre strictement positif!'); document.f.eps.focus(); }
else if (eps>1) { alert('Epsilon est trop grand!'); document.f.eps.focus(); }
else if (a>b) { alert('S.V.P. mettez un arc plus grand que la corde!'); document.f.arc.focus();  } 

else {
var maxiter=document.f.iter.value;
var i=0;

var U=U0=Math.sqrt(6*(1-a/b)); 
var Diff=1;

while (Diff>eps) {
U0=U; U=b/a*Math.sin(U);
Diff=Math.abs(U0-U);
if (i++ > maxiter) { alert('Nombre maximum d\'iterations atteint!'); return false; }
}

Angle= U*360/Math.PI;
Rayon=b/U;
Fleche=Rayon-Math.sqrt(Rayon*Rayon - a*a);

document.getElementById("id1").innerHTML = Math.round(Angle*1000)/1000 + ' degrees';
document.getElementById("id2").innerHTML = Math.round(Fleche*1000)/1000;
document.getElementById("id3").innerHTML = Math.round(Rayon*1000)/1000;
document.getElementById("id4").innerHTML = i;

// alert('U='+U+' iteration '+i+' et fleche='+Fleche);
}

return false;
}

</script></head>
<body bgcolor=#dddddd text=black><font size=4 face=verdana><center><h2>Calcul de la déflexion entre arc et corde</h2><br>
<form onsubmit="return calcule()" name=f><table width=90% border=3 cellspacing=5 cellpadding=5 bgcolor=yellow>
<tr><td align=middle valign=center colspan=2 bgcolor=blue><font size=3 face=verdana color=white>Inputs
<tr><td align=right valign=center><font size=3 face=verdana>Longueur d'arc: <td valign=center><input type=text size=30 name=arc value=18.85>
<tr><td align=right valign=center><font size=3 face=verdana>Longueur corde: <td valign=center><input type=text size=30 name=corde value=12>
<tr><td align=right valign=center><font size=3 face=verdana>Nombre maxi d'itérations: <td valign=center><input type=text size=30 name=iter value=2000>
<tr><td align=right valign=center><font size=3 face=verdana>Critère <font face=symbol>e</font>: <td valign=center><input type=text size=30 name=eps value=1E-6>
<tr><td align=middle valign=center colspan=2><input type=submit value="Compute..."></table>
</font></center></form>
<center><table width=90% border=3 cellspacing=5 cellpadding=5 bgcolor=cyan>
<tr><td align=middle valign=center colspan=2 bgcolor=blue><font size=3 face=verdana color=white>Outputs
<tr><td align=left valign=center><font size=3 face=verdana>Angle au centre: <td valign=center><div id=id1></div>
<tr><td align=left valign=center><font size=3 face=verdana>Flèche: <td valign=center><b><div id=id2></div></b>
<tr><td align=left valign=center><font size=3 face=verdana>Rayon: <td valign=center><div id=id3></div>
<tr><td align=left valign=center><font size=3 face=verdana>Itération: <td valign=center><font color=blue><div id=id4></div></font></table><br>
<table border=0><tr><td align=middle><font size=2 face=verdana>Auteur: <a href="http://mircscripts.fr/cgi-bin/monmail.pl?p=Averell&s=Script%20de%20corde%20et%20arc">Averell</a> 
</table>
</font></center>
</body>

Conclusion :


Si ça ne marche pas, vous pouvez me le faire savoir. Mais ça marche!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Averell
Messages postés
48
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
9 juin 2016
-
Merci :)
cs_JLN
Messages postés
373
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
17 juin 2013
-
J'ai regardé ton fichier Excel, et c'est vraiment un travail remarquable !
Ce lien intéressera surement pas mal de personne en mal avec ces fonctions rébarbatives (il faut le dire) et compliquées pour beaucoup.
Il y a quelques année, tout cela m'aurait bien aidé aussi.
Merci pour ton partage.
@+ JLN
cs_Averell
Messages postés
48
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
9 juin 2016
-
Oui c'est accessible à tout le monde. Le lien: http://www.google.fr/...

Le fichier contient des macros, mais elles ne sont pas dangereuses
cs_JLN
Messages postés
373
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
17 juin 2013
-
As-tu un lien ? Est-ce accessible à tout le monde ?
Pour mon histoire de flèche, imagines :
J'ai une cuve cylindrique horizontale pour le fuel ou l'eau de pluie (peu importe) je met un bâton j'ai la flèche, je connais le diamètre et la longueur de ma cuve et là grâce à toi je connais mon volume... Ceci n'est qu'un exemple bien sur.
Ton petit bout de programme peut s'avérer très utile à certains.
cs_Averell
Messages postés
48
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
9 juin 2016
-
Ok Ok. Pour info je maintiens une feuille de calcul qui traîne sur le Net, qui résoud ce problème pour tous les cas (il y en a 10), notamment celui où on connaît la flèche et la corde.

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.