papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: La fonction ATN2(x,y) me manque Sam 19 Mai 2012 - 17:38 | |
| Salut à tous ! Je travaille actuellement sur un programme où j’utilise la fonction qui retourne l’arc tangente de y/x (dans les 4 quadrants : donc de –pi à +pi en radians ou de -180 à +180 en degrés). Or, cette fonction n’existe pas en PANORAMIC. La fonction ATN(v) qui, elle, est disponible en PANORAMIC, ne fait pas l’affaire puisqu’elle ne tient pas compte des signes de x et de y et elle renvoie une valeur entre –pi/2 et +pi/2. Comme on ne peut pas définir des fonctions ni de transférer des paramètres, j’utilise donc un sous-programme qui calcul la fonction ATN2(x, y). Il est souhaitable de disposer, dans une version ultérieure, de la fonction ATN2(x,y). NB :Dans le manuel de référence de PANORAMIC, je signale une petite correction : fonction ATN(v), il est écris que le résultat est exprimé en degrés ce qui n’est pas juste : le résultat est exprimé en radians. Le code suivant illustre la définition de la fonction ATN2(x,y) et son appel dans un programme. - Code:
-
dim x,y,resultat,pi : pi = 4*atn(1) label atn2 height 0, 800 : caption 0,"ATN(y/x)"
for x = -3 to 3 for y = -3 to 3 gosub atn2 print " x = " ;x;" "; "y = ";y;" ";"atn2(x,y) = ";int(resultat*180/pi+0.5 ) next y next x end
atn2: ' Atn2 - Arc tangente de Y/X ' arc tangente de Y/X --> retourne les valeurs dans les 4 quadrants
If x = 0 resultat = Sgn(y) * pi/2 Else If x > 0 resultat = Atn(y / x) Else if x < 0 and y = 0 resultat = atn(y / x) - sgn(x) * pi else resultat = Atn(y / x) + Sgn(y) * pi end_if End_If end_if
return
J’ai exprimé le souhait de disposer de la fonction indiquée ci-haut ainsi que de la possibilité de définir, par le programmeur, ses propres fonctions avec surtout le transfert de paramètres à ces fonctions et, pourquoi pas, aux sous-programmes également ! Ces souhaits ont été déjà exprimés par d’autres et j’espère que Jack m’excusera pour les avoir renouveler ! Bien sûr, c’est à toi, Jack, de décider et merci une fois encore pour ce que tu nous offre ! | |
|