IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

demande d 'explications sur la fonction ATAN2


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Points : 17
    Points
    17
    Par défaut demande d 'explications sur la fonction ATAN2
    Bonjour à tous,
    Cette question serait théoriquement à placer dans le forum "mathématique pour débutants" mais bon... Je butte sur un problème de trigono en perl.
    J'ai un tableau me donnant des valeurs de tangentes que je voudrais transformer en angles (degrés). J'ai lu dans "Perlfunc" qu'il existait la fonction ATAN2. donnant l'arctangente en radians. Je n'ai pas de problème pour transformer des degrés en radians.
    Mais dites moi pourquoi ATAN2 me demande deux arguments (X/Y)?
    Je voudrais écrire un petit script qui me renvoie "45" en y entrant "1", "30" en y entrant ".5774", "75" en y entrant "3.7321",etc.
    merci d'avance

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    atan2() est une fonction classique en trigonométrie sur ordinateur parce qu'elle peut être calculée très efficacement et que la plupart des usages de atan() se font sur un rapport de deux longueurs de toute façon.
    Si tu veux avoir l'arctangente d'un nombre, il te suffit d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sub atan { atan2($_[0], 1) }
    --
    Jedaï

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Points : 17
    Points
    17
    Par défaut
    Bonsoir à tous,
    Merci pour la leçon de math Ô maître.


    A+

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2007
    Messages : 52
    Points : 39
    Points
    39
    Par défaut
    Bonsoir,

    Je reviens sur un petit problème que je rencontre avec la fonction atan2() de PERL.

    D'après ce que j'ai pu lire, la fonction atan2(y, x) de PERL calcule l'arctangent de y/x. Dans ce cas, quelqu'un pourrait-il m'expliquer pourquoi j'ai une valeur différente entre atan2(x*y, z) et atan2(x*y/z, 1) ?

    Merci beaucoup par avance,
    Mickaël

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Etrange, les valeurs pour quelques combinaisons d'entiers donnent des résultats identiques chez moi. Quelle version de perl ?
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2007
    Messages : 52
    Points : 39
    Points
    39
    Par défaut
    Salut,

    J'utilise PERL5.8.8, et je pense que je viens de comprendre la raison!

    En fait, voici les valeurs que j'utilisais:

    x = 0.807911
    y = -0.493707
    z = -0.366787

    Et les valeurs obtenues:
    atan2(x*y, z) = a = -2.314314
    atan2(x*y/z, 1) = b = 0.827278

    En fait, quand on y regarde de plus près, on se rend compte que:

    b = a + pi (rad)

    En fait, PERL détermine simplement le quadrant de l'arctangent. Ainsi, dans le premier cas (atan2(x*y, z)), x*y est négatif et z est négatif, on se situe donc dans le quadrant en bas à gauche. Dans le second cas (atan2(x*y/z, 1)), x*y/z est positif, ainsi que 1. On se retrouve donc dans le cadran en haut à gauche. D'où les valeurs observées!

    A bientôt,
    Mickaël

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Demande des explication sur la fonction récursive
    Par nypahe dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 30/04/2009, 21h11
  2. {VBA Excel} demande d'explication sur la fonction ClearContents
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2007, 15h24
  3. [filter2] Demande d'explication sur cette fonction
    Par ranell dans le forum Images
    Réponses: 3
    Dernier message: 10/05/2007, 09h19
  4. [final]demande d'explication sur ce mot-clé
    Par Invité dans le forum Langage
    Réponses: 10
    Dernier message: 18/04/2006, 11h32
  5. [Fonction]Explication sur la fonction EXPLODE de php
    Par daudet dans le forum Langage
    Réponses: 6
    Dernier message: 13/04/2006, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo