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 Delphi Discussion :

calculer un angle


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 48
    Points : 43
    Points
    43
    Par défaut calculer un angle
    bonjour
    je dessine une droite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    canvas.moveto(10,10);
    canvas.lineto(50,100);
    je voudrais calculer l angle de cette doite
    quelqu un aurait il une idee ?

  2. #2
    Membre habitué Avatar de gord's
    Inscrit en
    Avril 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 115
    Points : 127
    Points
    127
    Par défaut
    en coordonnées cartésiennes :
    pour une droite de (a,b) à (c, d), (c-a)/(d-b) est la tangente de l'angle.
    sauf si d=b, auquel cas angle=90°
    La prochaine révolution informatique : les machines qui font ce qu'on veut, au lieu de faire ce qu'on leur demande...
    Grand Vizir du Grand Gourou - Trois-quart aile gauche du TRFC et intendant de 3ème mi-temps - Papy fait de la résistance

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 48
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par gord's
    en coordonnées cartésiennes :
    pour une droite de (a,b) à (c, d), (c-a)/(d-b) est la tangente de l'angle.
    je suis desole mais je ne comprends pas ton explcation pourrais tu m en dire um peu plus

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 99
    Points : 126
    Points
    126
    Par défaut
    http://perso.wanadoo.fr/octocd11/Aribaud/Trigo/TrigoTan2.html
    A+---------------> Nat <-------------------

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 48
    Points : 43
    Points
    43
    Par défaut
    comment s en servir j ai juste une droite ?
    et je nai pas les dimensions de ma droite mais les points de departs et de fin de ecelle ci
    je ne comprends toujours pas?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Apparamment ce qui t'intéresse n'est pas tant de comprendre que de le faire. DOnc voici une fonction directement utilisable.
    Ya qu'à demander je suis prof de math.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    function Angle(x1,y1,x2,y2:double):double;
    var a,ang,x,y:double;
    begin
    x:=x2-x1;y:=y1-y2;
    if x=0 then
       begin
       if y>0 then ang:=Pi/2
       else if y<0 then ang:=3*Pi/2 else ang:=0;
       end
           else
       begin
       a:=arctan(y/x);
       if x>0 then if y>=0 then ang:=a else ang:=a+2*Pi;
       if x<0 then ang:=a+pi;
       end;
    result:=ang;
    end;
    Pour ton exemple ça donne Angle(10,10,50,100)
    L'angle est donné en radian. Si tu le veux en degré ça donne

    Angle(10,10,50,100)*180/Pi

    Cordialement
    Loran

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 48
    Points : 43
    Points
    43
    Par défaut
    merci a vous cela marche et je vais essayer de comprendre

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 52
    Points : 75
    Points
    75
    Par défaut
    Dans Delohi 7 (les autres versions je ne sais pas), il y a dans l'unité math la fonction arctan2 qui retourne l'angle dans le "bon cadran".

    Cela éviterait peut-être (je n'ai pas essayé) des IF.

    François

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

Discussions similaires

  1. Calcul d'angles
    Par Imed Soufi dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/05/2008, 11h18
  2. Calcul d'angle entre deux vecteurs
    Par feynman dans le forum Fortran
    Réponses: 8
    Dernier message: 22/09/2007, 13h59
  3. Calcul d'angle entre 2 vecteurs - direction
    Par lothei dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 03/09/2007, 19h29
  4. Calcul d'angles
    Par Giansolo dans le forum Octave
    Réponses: 3
    Dernier message: 27/02/2007, 19h00
  5. calcule d'angle entre 3 points d'une matrice
    Par bmw13fr dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 08/04/2006, 18h56

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