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 :

Coordonnées et triangles


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Coordonnées et triangles
    Bonjour,
    Je souhaiterais faire correspondre à une matrice de points des coordonnées, je m'explique :

    J'ai 2 matrices : - T qui contient des points et ces points forment des triangles,
    - V qui contient les coordonnées de ces points.

    Je voudrais associer V à T pour ensuite calculer le vecteur normal au plan formé par le triangle.
    En fait les 3 premiers chiffres correspondent au triangle 1...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    V =[1.19 3.55 -7.4 ; 4.82 3.1 6.23 ; -3.55 8.61 1.68 ; 2.41 -2.61 -3.69 ; -2.49 -4.2 -9.78 ; -0.6 9.53 -0.53 ; -6.96 -1.46 -2.46 ; -4.7 -9.94 -3.71];
    T= [6 2 3 ; 4 1 2 ; 1 2 6 ; 8 5 4 ; 7 8 5 ; 4 2 8 ; 2 8 7 ; 4 5 1 ; 1 6 3 ; 5 1 7 ; 7 1 3 ; 2 7 3];
     
    figure (1)
    trisurf(T,V(:,1),V(:,2),V(:,3)) %Pour afficher les triangles

    Si je me suis mal exprimé, je suis ouvert à toutes vos questions

    ma version de Matlab : 7.2.0.283 (R2006a) utilisée sous Debian

  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 318
    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 318
    Points : 52 922
    Points
    52 922
    Par défaut
    Essaie ceci :

    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
    V =[1.19 3.55 -7.4 ; 4.82 3.1 6.23 ; -3.55 8.61 1.68 ; 2.41 -2.61 -3.69 ; -2.49 -4.2 -9.78 ; -0.6 9.53 -0.53 ; -6.96 -1.46 -2.46 ; -4.7 -9.94 -3.71];
    T= [6 2 3 ; 4 1 2 ; 1 2 6 ; 8 5 4 ; 7 8 5 ; 4 2 8 ; 2 8 7 ; 4 5 1 ; 1 6 3 ; 5 1 7 ; 7 1 3 ; 2 7 3];
     
    figure('doublebuffer','on')
    colormap(gray);
    trisurf(T,V(:,1),V(:,2),V(:,3)) %Pour afficher les triangles
    alpha(.85)
     
    % Arêtes
    % Premier sommet - Second sommet
    A=[V(T(:,1),1)-V(T(:,2),1) V(T(:,1),2)-V(T(:,2),2) V(T(:,1),3)-V(T(:,2),3)];
    % Second sommet - troisième sommet
    B=[V(T(:,2),1)-V(T(:,3),1) V(T(:,2),2)-V(T(:,3),2) V(T(:,2),3)-V(T(:,3),3)];
     
    % Normales par produit vectoriel des arêtes
    n=cross(A,B);
    n=n./norm(n);
     
    % Centres géométriques
    C=[mean(reshape(V(T,1),size(T,1),[]),2) mean(reshape(V(T,2),size(T,1),[]),2) mean(reshape(V(T,3),size(T,1),[]),2)];
     
    hold on
     
    % Affichage des centres
    plot3(C(:,1),C(:,2),C(:,3),'g*')
     
    % Affichage des normales
    quiver3(C(:,1),C(:,2),C(:,3),n(:,1),n(:,2),n(:,3))
     
    axis equal vis3d off

  3. #3
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !
    Si je me suis mal exprimé, je suis ouvert à toutes vos questions
    La résolution de ton problème doit se faire en trois temps:
    1. Bien formuler ton problème.
    2. Choisir un algorithme.
    3. Le programmer.

    Ces trois étapes doivent absolument être franchies dans l'ordre.

    Pour la première, j'essaie de traduire: tu as deux tableaux (ce ne sont pas des matrices!):
    • V comporte 3 colonnes qui contiennent les coordonnées d'un certain nombre de points (nombres réels) à raison d'un point par ligne.
    • T comporte 3 colonnes qui contiennent les numéros des sommets de triangles (nombres entiers) à raison d'un triangle par ligne; en fait, ce sont des pointeurs sur les lignes de V.

    Tu veux construire un tableau X, de mêmes dimensions que T, dont les lignes contiendront les composantes du vecteur unité normal au plan dans lequel se trouve le triangle correspondant.
    Est-ce bien là ton problème?

    Passons maintenant à la seconde étape: pour chaque triangle, tu définis deux vecteurs correspondant à deux côtés, tu calcules leur produit vectoriel, que tu normalises en le divisant par sa longueur.

    A ce moment, tu sais ce que tu veux faire, et il ne te reste plus qu'à le programmer.

    Bonne chance.
    Jean-Marc Blanc

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/05/2012, 00h10
  2. Extraire les coordonnées des triangles d'un X
    Par Rafy dans le forum DirectX
    Réponses: 4
    Dernier message: 08/06/2006, 18h52
  3. Surface d'un triangle en coordonnées cartésiennes
    Par tlemcenvisit dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 11/06/2005, 21h56
  4. [3D] Triangles
    Par Frederic dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 09/11/2002, 00h01
  5. Coordonnées du curseur ???
    Par LE CHAKAL dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/08/2002, 18h28

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