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 :

Normale à partir de 3 points


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Par défaut Normale à partir de 3 points
    Bonjour à tous,

    Je cherche à créer une fonction sous Matlab qui permet à partir des coordonnées de trois points, la normale au deuxième point permettant ainsi d'avoir la normal à un contour.

    Comme pour le vecteur qui se trouve au niveau du point a dans l'image ci-dessous.
    Nom : Capture.PNG
Affichages : 789
Taille : 10,5 Ko

    Merci à tous !

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour,

    Un exemple pour trois points :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    clear
    A=[4,2,0];B=[1,3,3];C=[-3,0,3];
    ABC=[4,1,-3;2,3,0;0,3,3]
    plot3(ABC(1,:),ABC(2,:),ABC(3,:),'b.','MarkerSize',26)
    hold on
    line(ABC(1,:),ABC(2,:),ABC(3,:))
    Vn=cross(A-B,B-C);
    N=3*Vn/norm(Vn); % Vecteur normal au plan ABC avec un facteur de dimension = 3
    line([B(1),B(1)+N(1)],[B(2),B(2)+N(2)],[B(3),B(3)+N(3)],'Color','r','LineWidth',3)
    axis([-5,5,-5,5,-5,5])
    grid
    view(60,20)

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Par défaut
    Bonjour,

    Merci pour votre aide, mais il faut que le tout reste en 2D d'où ma difficulté...
    La normale peut être calculée par rapport à la tangente (à un point donné) au cercle que forme les 3 points.
    Mais aucune idée comment m'y prendre....

  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
    Pour chaque segment :
    • calcul du vecteur directeur
    • calcul du vecteur normal par inversion des composantes du vecteur directeur


    Pour deux segments successifs :
    • calcul du vecteur normal au point commun par somme puis normalisation des vecteurs normaux des deux segments

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour,

    Un autre essai :


    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
    >> type perpendiculaire
     
    clear all
    A=[4,6,0];B=[1,3,0];C=[3,2,0];
    ABC=[4,1,3;6,3,2;0,0,0];
    plot3(ABC(1,:),ABC(2,:),ABC(3,:),'b.','MarkerSize',26)
    hold on
    line(ABC(1,:),ABC(2,:),ABC(3,:))
    Vn=cross(A-B,B-C);
    N=3*Vn/norm(Vn); % Vecteur normal au plan ABC avec un facteur de dimension = 3
    %Perpendiculaire au point B
    line([B(1),B(1)+N(1)],[B(2),B(2)+N(2)],[B(3),B(3)+N(3)],'Color','r','LineWidth',3)
    axis(2*[-5,5,-5,5,0,5])
    grid on
    [C,R,CX,CY]=cxy(ABC(1,:),ABC(2,:));
    plot3(C(1),C(2),0,'R.','MarkerSize',26)
    hc=circle(C,R,1000,':'); 
    % Perpendiculaire au point 100
    line([CX(100),CX(100)+N(1)],[CY(100),CY(100)+N(2)],[0,N(3)],'Color','r','LineWidth',3)
     
     
    function [C,R,CX,CY]=cxy(X,Y)
    % Centre, rayon et points d'un cercle defini par trois points X=[x1,x2,x3]
    % et Y=[y1,y2,y3]
    N=(X(3)^2-X(2)^2)/(Y(3)-Y(2)) - (X(1)^2-X(2)^2)/(Y(1)-Y(2))+Y(3)-Y(1);
    D=2*(X(3)-X(2))/(Y(3)-Y(2))-2*(X(1)-X(2))/(Y(1)-Y(2));
    C(1)=N/D;
    C(2)=-C(1)*((X(1)-X(2))/(Y(1)-Y(2)))+((X(1)^2-X(2)^2)/(Y(1)-Y(2))+Y(1)+Y(2))/2;
    R=sqrt((X(1)-C(1))^2+(Y(1)-C(2))^2);
    %Calcul des points du cercle
    Theta=linspace(0,2*pi,1000);
    Rho=ones(1,1000)*R;
    [CX,CY] = pol2cart(Theta,Rho);
    CX=CX+C(1);
    CY=CY+C(2);
     
     
    >>

Discussions similaires

  1. determiner la direction ver le contour à partir d'un point
    Par kaiseresis dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 19/06/2008, 15h52
  2. Réponses: 2
    Dernier message: 28/04/2007, 19h35
  3. [VBA-E] Suppression de lignes à partir d'un point particulier
    Par coxi77 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/07/2006, 13h22
  4. [JTextArea]Recuperer une position à partir d'un Point
    Par rushtakn dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 19/05/2006, 09h36
  5. Remplacer un texte dans une cellule Excel à partir d'un point donné
    Par tonyC dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/04/2006, 19h05

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