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 :

boule minimale contenant un ensemble de points


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 89
    Points : 57
    Points
    57
    Par défaut boule minimale contenant un ensemble de points
    Salut,

    Je cherche à avoir le rayon et le centre de la boule minimale qui contient un ensemble de n points de l'espace, les coodronnées de ces points sont données par x[i], y [i] et z[i] avec i=1..n

    Quelqu'un a une idée?
    merci d'avance

  2. #2
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    A priori, je dirais que tu dois regarder les deux points les plus espacer et ca va te donner le diametre de ta boule. pour le centre, tu prends le centre du segment composer de ces deux points...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 89
    Points : 57
    Points
    57
    Par défaut
    Faux !

    Je raisonne en 2D, en 3D c'est pareil,
    Si tu prends trois points d'un triangle équilatéral, si tu prends ensuite un cercle (ou une boule) qui passe par deux points, il ne contiendra pas le troisième !

  4. #4
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    t'as un lien pour un algo en n*log(n) ici :

    http://www.cs.brown.edu/people/tor/java/mec/

    mais faut deja avoir qlq fonction de geometrie sous la main

    Sinon une version recursive pour matlab :
    http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=6457&objectType=FILE

    a+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 89
    Points : 57
    Points
    57
    Par défaut
    Merci !

    Aïe ! ça parait compliquer à implémenter,
    En fait, je n'aurai en général que dix points dans le pire des cas, je peux me permettre donc d'augmenter la complexité, existe-t-il une version plus simple à implémenter (même si elle est plus couteuse en temps de calcul )

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 89
    Points : 57
    Points
    57
    Par défaut
    La version de matlab parrait plus facile à implémenter et facilement généralisable

  7. #7
    Membre confirmé
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Points : 554
    Points
    554
    Par défaut
    Si tu as peu de points, tu peux utiliser le fait que la sphère est circonscrite à 4 points. Cela donne comme algo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    S nuage de points
    R = infini
    Pour chaque quadruplet (a,b,c,d) de S,
      calculer la sphère B(x,r) définie par (a,b,c,d)
      Si B(x,r) contient S et si r < R
         B = B(x,r)
         R = r
    Renvoyer B

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

    L'algorithme de Francis me semble globalement bon.
    Toutefois, il faut aussi envisager les boules dont le diamètre est constitué par 2 points ainsi que les sphéres centée sur les centre de gravité des triangles (intersection des médianes) définis par 3 points de l'ensemble.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  9. #9
    Membre confirmé
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Points : 554
    Points
    554
    Par défaut
    Citation Envoyé par Graffito
    Toutefois, il faut aussi envisager les boules dont le diamètre est constitué par 2 points ainsi que les sphéres centée sur les centre de gravité des triangles (intersection des médianes) définis par 3 points de l'ensemble.
    Effectivement, si aucune sphère définie par un quadruplet de points ne contient tous les points du nuage, il faut passer aux sphères définies par trois points qui ont leur centre dans le plan défini par les 3 points puis, en cas de nouvel échec prendre le diamètre maximal comme diamètre de la boule... et là on a forcément une boule qui contient tous les points!

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

Discussions similaires

  1. Intersection d'ensembles de points en 3D
    Par dodup64 dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 04/03/2008, 23h35
  2. Réponses: 0
    Dernier message: 13/12/2007, 18h08
  3. Réponses: 5
    Dernier message: 16/02/2007, 15h53
  4. Récupérer l'ensemble des points d'une droite
    Par Psycho_Kwak dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 18/01/2006, 11h42
  5. Réponses: 3
    Dernier message: 12/06/2002, 19h03

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