1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    décembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 19
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : décembre 2017
    Messages : 2
    Points : 1
    Points
    1

    Par défaut Calculer le point de Fermat d'un triangle

    Bonjour,
    J'aurais besoin d'aide pour réaliser un algorithme permettant de trouver le point de Fermat d'un triangle ABC quelconque;
    J'ai essayé à plusieurs reprises d'en créer un sans succès.. En effet je ne vois pas comment faire du tout!
    Je voulais utiliser la formule AG=√(xB−xA)2+(yB−yA)2. avec G ,point de Fermat
    Il faudrait trouver la somme des distances AG+BG+CG minimale or je me retrouve avec deux boucles for parcourant seulement des entiers.. ce qui ne fonctionne pas!

    Avez vous des idées ?
    Merci de votre aide

    Mathilde

  2. #2
    Membre éprouvé

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 639
    Points : 1 290
    Points
    1 290
    Billets dans le blog
    5

    Par défaut Calculer le point de Fermat d'un triangle

    Bonjour,

    Quelques remarques:
    a) Il vaut mieux noter F (ou I) le point de Fermat, et réserver la lettre (G) à l'isobarycentre, dont on peut avoir besoin.
    b) Il est indifférent que les coordonnées de (A, B, C) soient entières; par contre celles du point recherché sont nécessairement réelles.
    c) Tu devras exprimer trois distances par une relation de la forme: PM = ((xM - xP)2 + (yM - yP)2)1/2 .

    Plusieurs méthodes sont envisageables, par exemple:
    1°) Un calcul de coordonnées partant de la construction géométrique de (F), donné comme point de concours de 3 droites.

    2°) La recherche par un calcul itératif du point limite correspondant au minimum de la somme des trois distances: SM = MA + MB + MC .
    Là aussi, deux possibilités:
    a) la recherche "aveugle" de la plus basse valeur de S(x, y) au voisinage d'un point donné (M), en partant de l'isobarycentre (G), par comparaison des 4 valeurs observées aux sommets d'un petit carré centré en (M):
    S1(x+h, y) , S2(x-h, y) , S3(x, y+h) , S4(x, y-h) - comparaison entre elles et avec la valeur centrale SM = S0(x, y) ;
    si la valeur minimale ne se trouve pas au centre (M), passer au point voisin correspondant, sinon rester en (M), et prendre un incrément plus petit (h' = h / 10);
    poursuivre l'opération jusqu'à ce que l'on passe en-dessous du seuil de précision demandé (h < 10-8 ? 10-12 ? 10-16 ?) - cela dépend du format des variables Float employées;
    on prendra pour le pas initial une valeur simple (h0 = 1, 0.1, ...) très inférieure aux dimensions du triangle : h0 <~ 0.1 * Min(GA, GB, BC) .

    b) le calcul de petits déplacements successifs dans le plan (qui fait implicitement intervenir le vecteur gradient Grad(S)), sachant qu'une variation élémentaire de la somme S(x, y) admet pour expression:
    dS = d(AM) + d(BM) + d(CM) = ((1/AM)*AM + (1/BM)*BM + (1/CM)*CM)|dOM) = (Grad(S)|dOM) ;(1)
    un rapprochement systématique vers le minimum de (S) à partir de la position courante (M) sera obtenu par un petit déplacement de la forme:
    MM' = -k * Grad(S) , avec un coefficient suffisamment faible (k > 0 , k ~ 0.01 ? 0.001 ? ...) pour que là encore le déplacement effectué soit petit devant les dimensions du triangle (MM' << Min(GA, GB, BC) ;
    chaque étape s'accompagne dans ce cas d'une diminution de la somme des distances: dS = -k * (Grad(S)|Grad(S)) = -k * ║Grad(S)║2 < 0 .

    (1): la notation (.|.) représente le produit scalaire de deux vecteurs.

    # Le second procédé (2a) est le plus simple à mettre en oeuvre.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    décembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 19
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : décembre 2017
    Messages : 2
    Points : 1
    Points
    1

    Par défaut

    Merci beaucoup de votre aide j'ai ENFIN réussi !

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

Discussions similaires

  1. Point à l'intérieur d'un triangle ?
    Par remi77 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 15/05/2017, 14h49
  2. Calculer le point de Fermat
    Par Taupin21 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 25/10/2016, 19h55
  3. calcul coordonnées point
    Par diambu dans le forum Langage
    Réponses: 15
    Dernier message: 23/07/2007, 16h25
  4. Test: point au dessus d'un triangle
    Par NailMaker dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 12/06/2006, 19h55
  5. calculs des points
    Par rabi dans le forum OpenGL
    Réponses: 11
    Dernier message: 12/02/2004, 10h03

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