Calcul de déflexion entre arc et corde

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

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.