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

C++ Discussion :

[trigonométrie en c++]


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 315
    Par défaut [trigonométrie en c++]
    Bonjour, ce que je veux faire est assez simple, seulement je ne sais pas si je peux le faire en c++:
    j'ai un triangle dont la mesure des côté varie et j'aimerais avoir un angle(en degré). j'ai donc ma forlmule:
    Tangente de l'angle = côté opposé / côté adjacent...je ne connais que ces deux côtés...comment puis-je faire pour avoir l'angle? quel est la fonction en c++ qui permet de calculer l'inverse tangente? (tan-1)

  2. #2
    Membre expérimenté Avatar de Twindruff
    Inscrit en
    Janvier 2005
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 216
    Par défaut
    C'est atan (de maths.h) comme ArcTan dans la notation française.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 315
    Par défaut
    ok merci....je dois inclure maths.h?...
    Je dois aussi vous demander autre chose: yaurait-il une fonction qui renvoie la valeur absolue autre que ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (x < 0) y = -x; else y = x;

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut Re: [trigonométrie en c++]
    Pour rappel, il faut que ce soit un triangle rectangle :-)

    Ceci étant dit, il y a
    qui renvoie dans -pi/2, pi/2. Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double atan2(double y, double x);
    qui renvoie l'arc tangeante de (y/x) dans -pi, pi.

  5. #5
    Membre expérimenté Avatar de Twindruff
    Inscrit en
    Janvier 2005
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 216
    Par défaut
    Citation Envoyé par shirya
    if (x < 0) y = -x; else y = x;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define abs(x) ((x>0)?x:-x);

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    [quote="shirya"]ok merci....je dois inclure maths.h?...[/code]
    Non. math.h

    Citation Envoyé par shirya
    Je dois aussi vous demander autre chose: yaurait-il une fonction qui renvoie la valeur absolue autre que ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (x < 0) y = -x; else y = x;
    Il y a dans stdlib.h (ou cstdlib)
    et dans math.h (ou cmath)
    J'oubliais presque, math.h introduit des surcharges pour float, double et long double
    de abs, atan, atan2.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 315
    Par défaut
    Pourquoi est ce que lorsque j'utilise la fonction atan ex: il ya une errue qui s'Afficher:
    'atan' : ambiguous call to overloaded function

  8. #8
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par shirya
    Pourquoi est ce que lorsque j'utilise la fonction atan ex: il ya une errue qui s'Afficher:
    'atan' : ambiguous call to overloaded function
    Le message indique que le compilateur ne sait pas quelle version surchargée appeler. Le problème est que dans l'appel le
    résultat de la division est un int. Qui peut être converti implicitement
    en n'importe quel type flottant. Donc il y a le choix entre les trois surcharges
    que j'ai données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    float atan(float);
    double atan(double);
    long double atan(long double);
    et rien qui ne fait préférer une ou l'autre.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 315
    Par défaut
    ok ben j'ai converit tou en float...tou marche
    merci a vous tou

  10. #10
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par shirya
    ok ben j'ai converit tou en float...tou marche
    merci a vous tou
    C'est bien l'idée de la solution, mais en général il vaut mieux éviter
    les floats et utiliser les doubles sauf si on a de très bonnes raisons
    pour le faire (et a priori quelqu'un qui n'en est pas sur n'a pas de
    bonnes raisons :-)). Donc converti plutôt en double.

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 247
    Par défaut
    Citation Envoyé par jmarc68
    C'est bien l'idée de la solution, mais en général il vaut mieux éviter
    les floats et utiliser les doubles sauf si on a de très bonnes raisons
    pour le faire (et a priori quelqu'un qui n'en est pas sur n'a pas de
    bonnes raisons :-)). Donc converti plutôt en double.
    C'est marrant, j'aurais dit exactement l'inverse ;-). C'est un mauvais réflexe de toujours pendre le plus gros pour se dire que plus on a de marge mieux c'est. Il faut étudier le besoin et prendre la solution la plus adaptée.

  12. #12
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Selenite
    Citation Envoyé par jmarc68
    C'est bien l'idée de la solution, mais en général il vaut mieux éviter
    les floats et utiliser les doubles sauf si on a de très bonnes raisons
    pour le faire (et a priori quelqu'un qui n'en est pas sur n'a pas de
    bonnes raisons :-)). Donc converti plutôt en double.
    C'est marrant, j'aurais dit exactement l'inverse ;-). C'est un mauvais réflexe de toujours pendre le plus gros pour se dire que plus on a de marge mieux c'est. Il faut étudier le besoin et prendre la solution la plus adaptée.
    Si j'ai bonne memoire, j'ai pique cette regle chez William Kahan. Naturellement si on
    est capable d'analyser l'effet precisement, on peut passer outre. Mais les gens capables
    de le faire ne courent pas les rues.

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    C'est une règle que j'applique aussi. Je me rappelle en avoir lu une longue justification quelque part, mais j'avoue ne plus me souvenir où.
    Une des justifications qui me vient à l'esprit c'est que la plus part des bibliothèques mathématiques travaillent en double, et que transtyper systématiquement des doubles floats est assez couteux quand on fait du calcul intensif.

  14. #14
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Moi, j'ai encore une autre règle, quand on veut s'assurer d'avoir des calculs corrects sans être un expert en la matière (et même sans avoir compris le what every computer...) : Utiliser un typedef pour les variables numériques. Puis lancer deux fois le calcul : Une fois avec le typedef en double, l'autre fois avec le typedef en float. Si les résultats sont différents, pas de chance. S'il sont identiques, on a une certaine probabilité qu'ils soient bons.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

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

Discussions similaires

  1. [CS5] [Trigonométrie] Calculer un angle
    Par Remizkn dans le forum ActionScript 3
    Réponses: 7
    Dernier message: 18/12/2011, 19h09
  2. Trigonométrie : trouver deux points à partir d'un premier
    Par zazaraignée dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 02/02/2011, 12h35
  3. Problème de trigonométrie
    Par thefrog dans le forum Mathématiques
    Réponses: 22
    Dernier message: 21/06/2009, 18h08
  4. souci de Trigonométrie
    Par Héralde dans le forum Mathématiques
    Réponses: 10
    Dernier message: 05/11/2008, 18h55
  5. [Trigonométrie] Disposition d'éléments
    Par GLDavid dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/10/2005, 10h22

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