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

MATLAB Discussion :

Séparer un ensemble de points 3D en différents groupes


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Séparer un ensemble de points 3D en différents groupes
    Bonjour,

    J'ai un ensemble de points 3D stocké dans une matrice Nx3 (vous pourrez trouver le fichier ci-joint). Ces points constituent les différentes enveloppes, visible sur la figure ci-joint.

    Je veux les séparer en les groupes de points, chacun comporte des points qui constituent une enveloppe.
    Pourriez-vous m'aider, s'il vous plaît!

    Merci beaucoup!
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Les points sur l'image semble définir une grille entière avec des points régulièrement espacés (sauf au niveau des trous). Est-ce bien le cas ?
    Pourrais-tu nous fournir les données complètes et non pas seulement les points sur les contours ?

    En attendant, voici une première méthode simple mais pas forcément très robuste.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    load points_bords_trous.mat
     
    x = points_bords_trous(:,1);
    y = points_bords_trous(:,2);
    z = points_bords_trous(:,3);
     
    figure(1)
    clf
    plot3(x, y, z, 'b+')
    axis equal
     
    ngroup = 1;
    group(ngroup).points = points_bords_trous(1,:);
    ischeck = false(1,size(points_bords_trous,1));
    ischeck(1) = true;
     
    idx = 1;
     
    dmax = 10;
     
    while ~all(ischeck)
     
        d = sqrt((points_bords_trous(idx,1)-points_bords_trous(:,1)).^2 + ...
            (points_bords_trous(idx,2)-points_bords_trous(:,2)).^2 + ...
            (points_bords_trous(idx,3)-points_bords_trous(:,3)).^2);
     
        d(ischeck) = inf;
     
        [~, idx] = min(d);
     
        if d(idx)>dmax
            ngroup = ngroup+1;
            group(ngroup).points(1,:) = points_bords_trous(idx,:);
        else
            group(ngroup).points(end+1,:) = points_bords_trous(idx,:);
        end
     
        ischeck(idx) = true;
     
    end
     
    hold on
     
    col = hsv(ngroup);
    for n = 1:ngroup
       p(n) = plot3(group(n).points(:,1), group(n).points(:,2), group(n).points(:,3), 'o', 'color', col(n,:));
    end
     
    legend(p, strcat({'Group '}, num2str((1:ngroup).')))
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/02/2007, 15h53
  2. boule minimale contenant un ensemble de points
    Par tlemcenvisit dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 28/02/2006, 10h36
  3. 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
  4. Réponses: 4
    Dernier message: 10/02/2005, 16h10
  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