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 :

Tetrahedralisation surface convexe


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 39
    Par défaut Tetrahedralisation surface convexe
    Bonjour,

    J'ai un nuade de point en 3D (coordonées X,Y,Z présentes dans un tableau "TableauCoord"). Je souhaite obtenir l'envellope de ce nuage.

    J'utilisais jusqu'à présent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    K=convhulln(TableauCoord)
    trisurf(K,TableauCoord (:,1),TableauCoord (:,2),TableauCoord (:,3))
    Ce code fonctionne très bien pour des surfaces convexes mais malheuresement il m'arrive d'avoir des fonctions concaves et dans ce cas le cas ne fonctionne pas (cf la pièce jointe qui montre 2 images : nuage de point avant triangulation et après).

    Je me suis donc tournée vers la triangulation de Delaunay et par conséquent la fonction "Delaunayn" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Tes = delaunayn(TableauCoord)
    trisurf(Tes,TableauCoord (:,2),TableauCoord (:,1),TableauCoord (:,3))
    Malheuresement j'obtiens le même résultat.

    Est-ce alors un problème de représentation ? J'ai utilisé également "tetramesh" mais dans ce cas les dimensions ne sont pas du tout conservées.

    Auriez-vous une idée d'où peut provenir le problème ?
    Images attachées Images attachées  

  2. #2
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut
    Bonjour,

    - Déjà est ce que la tetrahedralisation d'un ensemble non convexe est définie de manière unique ?
    - Pourquoi convhulln() plutot que convhull() ?
    - As-tu essayé la méthode de classe
    convexHull
    Class: DelaunayTri

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 39
    Par défaut
    Déjà est ce que la tetrahedralisation d'un ensemble non convexe est définie de manière unique ?
    Question trop théorique pour moi, je n'en ai donc aucune idée


    Pourquoi convhulln() plutot que convhull() ?
    Une erreur de ma part, je travaile avec convhull() mais à noter que l'on obtient le même résultat si on utilise convhulln.

    As-tu essayé la méthode de classe?
    J'ai déjà essayé cette méthpode et le résultat est pire

  4. #4
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Par défaut
    Salut,
    les problèmes de recherche d'enveloppe non convexe possèdent de multiples solutions, dans ton cas je te propose un algo de type :
    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
    Découper le nuage de points en section selon X % on profite que l'enveloppe des coupes selon X est convexe
    Pour chaque nuage n % commencont par le nuage à plus petit X
     si n==1    
      Chercher l'enveloppe convexe de ce nuage.
      Chercher les vecteurs normaux à chaque face
      Garder les points des faces dont les vecteurs ont une composante X négative
      Mettre les points des faces dont les vecteurs ont une composante X positive en tampon
     si n>1 et n<dernier
      Chercher l'enveloppe convexe du nuage n et des points mis en tampon. 
      Garder les points des faces dont les vecteurs ont une composante X négative
      Vider le tampon
      Mettre les points des faces dont les vecteurs ont une composante X positive en tampon
     si n==dernier  
      Chercher l'enveloppe convexe du nuage n et des points mis en tampon.
      Garder tous les points
    fin
    L'ensemble des points gardés devraient former une enveloppe non convexe, et en fonction de la taille de ta découpe tu auras des résultats plus ou moins satisfaisant.

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 39
    Par défaut
    Bonjour,

    Je veux bien tenter mais avant je souhaite éclairsir deux trois choses car je ne sais pas si on est parti sur le même objectif.

    En effet, de mon coté j'ai donc déjà en ma possession les points qui forment le contour de mon nuage. J'utilise ensuite la tetrahedralisation afin d'obtenir une surface et en particulier un tableau des faces de mon envelope (non convexe) pour pouvoir ensuite le représenter dans un autre logiciel.
    Ton code n'a-t-il pas pour objectif d'obtenir ces points ?

    2eme question la phrase "Mettre les points en tampon" signifie conserver les données. Est-ce exacte ?

  6. #6
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Par défaut
    1- en effet je cherchais à trouver les points de l'enveloppe.
    Est ce que simplement un delaunaytri sur ton nuage de points ne te donne pas un bon résultat?
    2- oui, je met les données en tampon pour les utiliser à l'itération suivante. Ces données là ne sont pas à sauvegarder par la suite

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

Discussions similaires

  1. Taille des surfaces avec DirectDraw
    Par Shakram dans le forum DirectX
    Réponses: 5
    Dernier message: 09/09/2002, 00h42
  2. Effet Fade In / Fade Out sur une surface DirectDraw
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 08/09/2002, 17h37
  3. Sauvegarder une surface dans un fichier
    Par Freakazoid dans le forum DirectX
    Réponses: 6
    Dernier message: 18/08/2002, 15h23
  4. Redimensionnement d'une surface
    Par Freakazoid dans le forum DirectX
    Réponses: 4
    Dernier message: 01/07/2002, 22h01
  5. Opengl -- Les surfaces
    Par Anonymous dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/05/2002, 10h14

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