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

Algorithmes et structures de données Discussion :

3 points Périmétre du cercle?


Sujet :

Algorithmes et structures de données

  1. #1
    Membre habitué Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 162
    Points
    162
    Par défaut 3 points Périmétre du cercle?
    Aprés des jours de travail avec les équations mathématique mais son resultat applicable. Je m'adresse à vous pour m'aider.

    Voila mon probléme : On veut calculer le périmétre d'un cercle sachant qu'il passe par 3 points non colineair A(X1,Y1) B(X2,Y2) et C(X3,Y3). On n'a pas ni le rayon ni le diamétre!!

    Alors j'ai pensé à l'intersection des medianes de (AB) et (AC) et (BC) mais il y a trop de conditions sur les calcules . Merci
    - Microsoft Dynamics AX Technical Expert
    - OpenERP Module Developper
    - Mécanicien informaticien passioné
    - CV : http://www.viadeo.com/fr/profile/mohamed-amine.

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Peut-être en t'aidant de l'équation cartésienne d'un cercle dans le plan, voir ici:http://homeomath.imingo.net/cercle1.htm

    A partir de cette équation, tu peux essayer de déterminer mathématiquement a et b et donc en déduire r (et enfin le périmètre du cercle).
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 82
    Points : 73
    Points
    73
    Par défaut
    en géométrie :
    le centre du cercle est le point d'intersection des médiatrices de [AB] et [AC]

    donc il faut calculer les equations de chaque médiatrice.
    ce lien montre comment calculer cet equation de la médiatrice.
    http://cyberlesson.free.fr/Cybermath...mediatrice.htm

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    si tu connais un peu les math, tu peux calculer l'intersection des médiatrices des segments [AB] et [AC].
    Cette intersection te donnera le centre du cercle passant par ces trois points. Une fois avec le centre, tu calcules le rayon et ensuite le périmètre du cercle.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Cas particulier pour éviter les divisions par 0: si pour deux points A et B on a Xa=Xb et Ya!=Yb, dans ce cas on a directement:
    - les coordonnées du centre (Xa; Ya+Yb/2)
    - le rayon du cercle ( abs(Yb-Ya)/2 )

    On vérifie alors que le troisième point C se trouve bien sur le cercle (grâce à l'équation cartésienne du cercle).

    C'est la même chose si Ya=Yb et Xa!=Xb, ou pour les points B et C. Donc si le langage le permet (C, C++), on utilise des pointeurs pour traiter tous ces cas particuliers de manière générique.

    Une fois tous ces cas particuliers éliminés, on n'a plus à se soucier des divisions par 0 (puisque Xa,Xb,Xc sont tous différents, de même pour Ya,Yb,Yc).
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    Si con considère A(Ax,Ay) B(Bx,By) et C(Cx,Cy) comme les 3 points donnés :
    On déduit les points médiants ab ( (Ax +Bx)/2,(Ay+By)/2) et
    bc((Bx+Cx)/2,(By+Cy)/2).
    Les pentes sont Pab = (By-Ay)/(Bx-Ax) et P(bc=(Cy-By)/(Cx-Bx)
    on associe alors P'ac=-1/Pab P'bc=-1/Pbc pour définir les normales.

    On a donc les 2 médianes à partir des couples (ab,P'ac) et ( bc,P'bc) d'où le centre si ces 2 droites ne sont pas paralèlles ( ce qui arrive si A,B,C sont collinéaires)
    il faut bien entendu traiter spécifiquement les cas Pab ou Pbc=0 ( => droite horizontale => normale verticale et P' n'existe pas) et les cas où Pab resp. Pbc n'existe pas ( droite vrticale => normale Horizontale => P' =0)

  7. #7
    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
    bonjour,

    Voila comment j'avais procédé.

    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
     
    xd1 = (x2-x1)/2
    yd1 = (y2-y1)/2 
    xd2 = (x3-x1)/2 
    yd2 = (y3-y1)/2 
    d1 = yd1*xd2-yd2*xd1  
    Si d1=0 alors pas de solution  // cas de colinéarité
    sinon
        débutsinon
            d2 = yd1*(yd1-yd2)+xd1*(xd1-xd2)
            k = d2/d1
            xc = xd2+x1-k*yd2
            yc = yd2+y1+k*xd2
            r = dist(x1,y1,xc,yc)    // distance entre (x1,y1) et (xc,yc)
        finsinon

    Où (x1,y1) (x2,y2) (x3,y3) sont les coordonnées des trois points
    (xc,yc) sont les coordonnées du centre
    r est le rayon du cercle

    Cordialement
    Loran

  8. #8
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    ATTENTION,

    l'intersection des médianes, donne le cercle du centre INSCRIT dans le triangle formé des trois points. La distance entre les chacun des points du triangle et le centre trouvé varie alors pour chacun des points du triangle.
    La seule façon pour avoir le périmètre est donc d'utiliser les médiatrices.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  9. #9
    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
    Citation Envoyé par ToTo13
    ATTENTION,

    l'intersection des médianes, donne le cercle du centre INSCRIT dans le triangle formé des trois points. La distance entre les chacun des points du triangle et le centre trouvé varie alors pour chacun des points du triangle.
    La seule façon pour avoir le périmètre est donc d'utiliser les médiatrices.
    Bonjour,

    Petite correction

    Point de concours des
    - mediatrices -> centre du cercle circonscrit
    - bissectrices -> centre du cercle inscrit
    - médianes -> centre de gravité (isobarycentre)
    - hauteur -> orthocentre

    Cordialement
    Loran

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut
    Si on appelle a, b et c les longueurs des trois cotés du triangle, et R le rayon du cercle circonscrit, la surface S du triangle est donnée par
    Par ailleurs, en notant s le demi périmètre du triangle (s = (a+b+c)/2), on a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    S = sqrt(s(s-a)(s-b)(s-c))
    (formule dite de Héron d'Alexandrie).

    Il en résulte qu'on obtient le rayon du cercle circonscrit en fonction des longueurs des trois cotés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    R = (abc)/4sqrt(s(s-a)(s-b)(s-c))
    On remarque que le dénominateur s'annule précisément quand la surface du triangle est nulle, c'est à dire quand les trois sommets sont alignés.

  11. #11
    Membre habitué Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 162
    Points
    162
    Par défaut Voila une bonne methode!!
    Voila un petit algorithme qui suffira à resoudre mon probléme sans se plenté dans les divisions.
    1- Supposons les trois point A(Ax,Ay) , B(Bx,By) et C(Cx,Cy).
    2- On fixe une precision epsilon( = par exemple 0.000000001).
    3- En premier temps on calcule les centres des segments [AB],[AC] et [BC]. Suposons ces centre I(a,b) J(c,d) et K(e,f).
    4- Et on boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Tantque( dist(I,J,K)>epsilon) getmilieu(I,J,K);
      la fonction dist() returne le max des distance d(I,J) d(I,K) et d(J,K).
      la fonction getmilieu() trouve les milieux I,J,K des segments repectivement [IJ],[IK] et [IK]
    Une fois sortie de la boucle, on peut dire que le centre du cercle est l'un des I,J,K avec la precision epsilon.
    Et c'est fini :
    .
    Si vous ne comprenez pas quelque chose on peut le discuter.
    - Microsoft Dynamics AX Technical Expert
    - OpenERP Module Developper
    - Mécanicien informaticien passioné
    - CV : http://www.viadeo.com/fr/profile/mohamed-amine.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut
    Tu veux dire que I,J et K remplacent A,B et C à chaque passage dans la boucle ?

  13. #13
    Membre habitué Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 162
    Points
    162
    Par défaut oui!!
    Disant oui à chaque passage de la boucle, on cherche le milieu des segments [IJ],[IK] et [JK] puis on les affecte à I,J et K.
    Tu fais un dessin devant toi et tu vera comment ça marche. Tu trace les droites (AB) (AC) et (BC) (c'est un triangle) puis les droites qui passent par leur milieux (tu aura un triangle plus petit inclus dans le premier ainsi de suite jusqu'à avoir un triangle dont la longuer de la max des cotes est inférieur à epsilon : disant un point!!!
    - Microsoft Dynamics AX Technical Expert
    - OpenERP Module Developper
    - Mécanicien informaticien passioné
    - CV : http://www.viadeo.com/fr/profile/mohamed-amine.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut
    J'ai bien compris. Malheureusement, ton algorithme est faux, car le point que tu trouves est le centre de gravité, pas le centre du cercle circonscrit.

  15. #15
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Comme j'ai pas voulu rédiger le calcul moi-même, j'ai fait une peite recherche sur le web et j'ai vite trouvé :
    Let the equation of the circle be

    (x-h)^2 + (y-k)^2 = r^2,

    and substitute the three known points, getting 3 equations in 3
    unknowns h, k, and r:

    (x1-h)^2 + (y1-k)^2 = r^2
    (x2-h)^2 + (y2-k)^2 = r^2
    (x3-h)^2 + (y3-k)^2 = r^2

    which you can solve simultaneously. First subtract the third equation
    from the other two, thus eliminating r^2, h^2, and k^2. That will
    leave you with 2 simultaneous linear equations in h and k to solve.
    This you can do as long as the 3 points are not collinear. Then those
    values of h and k can be used in the first equation to find the
    radius:

    r = sqrt[(x1-h)^2 + (y1-k)^2].
    Example: Suppose a circle passes through the points (4,1), (-3,7), and
    (5,-2). Then we know that:

    (h-4)^2 + (k-1)^2 = r^2
    (h+3)^2 + (k-7)^2 = r^2
    (h-5)^2 + (k+2)^2 = r^2

    Subtracting the first from the other two, you get:

    (h+3)^2 - (h-4)^2 + (k-7)^2 - (k-1)^2 = 0,
    (h-5)^2 - (h-4)^2 + (k+2)^2 - (k-1)^2 = 0,

    h^2 + 6h + 9 - h^2 + 8h - 16 + k^2 - 14k + 49 - k^2 + 2k - 1 = 0
    h^2 - 10h + 25 - h^2 + 8h - 16 + k^2 + 4k + 4 - k^2 + 2k - 1 = 0

    14h - 12k + 41 = 0
    -2h + 6k + 12 = 0

    10h + 65 = 0
    30h + 125 = 0

    h = -13/2
    k = -25/6

    Then

    r = sqrt[(4+13/2)^2 + (1+25/6)^2]
    = sqrt[4930]/6

    Thus the equation of the circle is:

    (x+13/2)^2 + (y+25/6)^2 = 4930/36
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  16. #16
    Membre habitué Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 162
    Points
    162
    Par défaut ah oui..........
    ah oui vous avez raison, il donne le centre de gravité() .
    Mais est-ce il y a possibilité de le modifier pour avoir le centre du cercle? Essayons tous!!!!? Sachant qu'ils sont colinéaires (le centre de gravité et le centre du cercle).
    - Microsoft Dynamics AX Technical Expert
    - OpenERP Module Developper
    - Mécanicien informaticien passioné
    - CV : http://www.viadeo.com/fr/profile/mohamed-amine.

  17. #17
    Membre habitué Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 162
    Points
    162
    Par défaut cette fois c'est resolu
    Alors cette fois c'est resolu. Merci Graffito
    Mais (je vais pas mettre resolu) essayons de trouvez une relation entre le centre de gravité et le centre du cercle. ok
    - Microsoft Dynamics AX Technical Expert
    - OpenERP Module Developper
    - Mécanicien informaticien passioné
    - CV : http://www.viadeo.com/fr/profile/mohamed-amine.

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut
    Le centre de gravité divise le segment formé par l'orthocentre (intersection des hauteurs) et le centre du cercle circonscrit dans le rapport 2/3 coté orthocentre et 1/3 coté centre du cercle circonscrit. C'est une propriété bien connue de la droite d'Euler. Ceci-dit, je crois que ça ne fait pas avancer le problème.

    Par contre je crois que la formule que j'ai donnée pour le périmètre du cercle circonscrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    P = 2pi (abc)/sqrt(s(s-a)(s-b)(s-c))
    est assez simple (et certainement la plus élégante et la plus symétrique). Evidemment, il fadrait la retravailler un peu pour minimiser le nombre de racines carrées à calculer. En fait, elle va conduire grosso-modo aux même calculs que ceux proposés par Graffito. Je constate quand même que le calcul de Graffito ne demande qu'une seule racine carrée, alors qu'à priori celle que j'ai donné en demande 4 (une pour a, une pour b, une pour c et celle du dénominateur). Mais cela doit pouvoir s'optimiser.

    La formule d'Héron d'Alexandrie est utilisée couramment de nos jours par les agriculteurs qui veulent connaitre la surface de leurs champs. Bien qu'Héron d'Alexandrie ait vécu au 1er siècle après JC, cette formule était sans doute déjà connue de Pythagore au 3ieme siècle avant JC.

  19. #19
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Déterminer le centre de gravité est assez simple : le point se situe au 2/3 de chaque médiane.

    Donc, si le point M est le centre de BC et G le centre de gravité.
    Mx:=(Bx+Cx)/2 ;
    My:=(By+Cy)/2 ;

    Gx:=Ax+2*(Mx-Ax)/3 ;
    GY:=Ay+2*(My-Ay)/3 ;

    ce qui se simplifie en :
    Gx=(Ax+Bx+Cx)/3
    Gy=(Ay+By+Cy)/3
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  20. #20
    Membre habitué Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 162
    Points
    162
    Par défaut Superble
    C'est vraiment superbe cette formule d'Héron d'Alexandrie.
    Problème reglé merci
    - Microsoft Dynamics AX Technical Expert
    - OpenERP Module Developper
    - Mécanicien informaticien passioné
    - CV : http://www.viadeo.com/fr/profile/mohamed-amine.

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

Discussions similaires

  1. [Google Maps] Point sur un cercle autour d'un point
    Par maitrebn dans le forum APIs Google
    Réponses: 3
    Dernier message: 27/02/2012, 20h11
  2. [Google Maps] recupérer des points dan un cercle déterminé
    Par amine.h dans le forum APIs Google
    Réponses: 1
    Dernier message: 04/09/2011, 12h28
  3. Tous les points d'un cercle
    Par Speed41 dans le forum Débuter
    Réponses: 8
    Dernier message: 22/12/2007, 09h26
  4. Un point sur un cercle
    Par Speed41 dans le forum Langage
    Réponses: 8
    Dernier message: 10/09/2007, 19h56
  5. Coordonnées des points d'un cercle
    Par guidevelop dans le forum C
    Réponses: 2
    Dernier message: 23/11/2006, 09h28

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