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 :

Charger un maillage avec un trou


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Par défaut Charger un maillage avec un trou
    Salut tous

    j'ai un petit problème avec matlab, j'ai un maillage d'une plaque récupéré d'un logiciel CAO sous forme de deux vecteur (cordonné X et Y).
    la pièce c'est une plaque avec un trous carré à l'interieur.
    j'arrive à lire le maillage mais pas le trou??
    voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    data=importdata('C:\Documents and Settings\Bureau\Maillage.txt');
    X= data(:,2);
    Y= data(:,3);
    fh = figure('Position',[560 1400 700 430],'Color','w');
    TRI = delaunay(X,Y);
    triplot(TRI,X,Y,'b','LineWidth',1);
    je me demande s'il existe sur matlab une autre fonction meilleur que delaunay , et qui prend en compte le trou à l'interieur de mon maillage.

    Je vous mis une image et mon fichier maillage,espirant votre aide
    Merci d'avance .
    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 317
    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 317
    Par défaut
    Tu ne lis pas le maillage depuis ton fichier.
    Tu lis seulement les coordonnées des points.
    C'est la fonction DELAUNAY qui génère les maillage à partir de ces points

    Le "trou" n'étant pas définit de manière explicite, je vois mal comment tu va pouvoir t"en sortir. Il faudrait un peu plus que les seules coordonnées des points (des dimensions, des arêtes...)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Par défaut
    oui je suis d'accord justement comment et quoi je dois utiliser comme commande pour m'en sortir???

    Est ce que au lieu de charger le maillage, je lis plutot les cordonné de point qui définissent ma géometrie (4points d'extrimité de ma plaque + les 4 point d'extrimité de mon trous carré)
    apres pour remplire l'espace entre le trou et la plaque comment peut-on faire cela?????

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Citation Envoyé par Medoou Voir le message
    apres pour remplire l'espace entre le trou et la plaque comment peut-on faire cela?????
    En fait tu "remplis" la plaque et le trou.
    Ensuite tu supprimes les noeuds et les éléments qui sont à l'intérieur du trou

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Par défaut
    tu supprimes les noeuds et les éléments qui sont à l'intérieur du trou
    OK ----> mais comment??

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Par défaut
    Je suis désolé farnchement j'ai regardé "inpolygon",mais je vois pas trop c'est quoi le rapport avec mon problème et comment et ou peut me servir ??

    Peux tu m'expliquer encore plus !!!

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Vu la géométrie du "trou", ton problème peut être simplifié.

    Tu peux ajouter un noeud au centre de ton polygon interne et supprimer par la suite tous les éléments créés qui sont connectés à ce noeud :

    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
    th = linspace(0,2*pi,30);
    th(end) = [];
     
    % Contour interne
    r = 1;
    x = r*cos(th);
    y = r*sin(th);
     
    % Contour externe
    R = 1.3;
    X = R*cos(th);
    Y = R*sin(th);
     
    % Triangulation sur le domaine complet + un point dans le contour interne
    tri = delaunay([0;x(:);X(:)],[0;y(:);Y(:)]);
     
    % Liste des éléments connectés au point ajouté (pour suppression)
    idx = ~any(tri == 1,2);
     
    % Visualisation
    figure
     
    subplot(2,2,[1 2])
    plot(x,y,'r-',X,Y,'b-');
    axis equal tight
     
    subplot(2,2,3)
    triplot(tri,[0;x(:);X(:)],[0;y(:);Y(:)])
    axis equal tight
     
    subplot(2,2,4)
    triplot(tri(idx,:),[0;x(:);X(:)],[0;y(:);Y(:)])
    axis equal tight
    ou bien, sans ajouter de point, tu peux supprimer les éléments qui connectent uniquement des points appartenant au polygone interne
    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
    th = linspace(0,2*pi,30);
    th(end) = [];
     
    % Contour interne
    r = 1;
    x = r*cos(th);
    y = r*sin(th);
     
    % Contour externe
    R = 1.3;
    X = R*cos(th);
    Y = R*sin(th);
     
    % Triangulation sur le domaine complet
    tri = delaunay([x(:);X(:)],[y(:);Y(:)]);
     
    % Suppression des éléments qui ne possèdent que des noeuds du contour interne
    num = 1:numel(x);
    idx = ~all(ismember(tri,num),2);
     
    % Visualisation
    figure
     
    subplot(2,2,[1 2])
    plot(x,y,'r-',X,Y,'b-');
    axis equal tight
     
    subplot(2,2,3)
    triplot(tri,[x(:);X(:)],[y(:);Y(:)])
    axis equal tight
     
    subplot(2,2,4)
    triplot(tri(idx,:),[x(:);X(:)],[y(:);Y(:)])
    axis equal tight

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/04/2006, 15h14
  2. Charger trois OS avec lilo
    Par JavaAcro dans le forum Administration système
    Réponses: 9
    Dernier message: 26/04/2006, 11h35
  3. [8i][forms 6i] charger un bloc avec un curseur
    Par Magnus dans le forum Oracle
    Réponses: 17
    Dernier message: 20/01/2006, 15h14
  4. Charger une table avec PK, puis ajouter identity sur la PK
    Par heloise31 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 18/01/2006, 16h23
  5. charger une image avec Jframe
    Par Battosaiii dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 15/12/2005, 15h35

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