http://www.ups-tlse.fr
L3 Mécanique Ingénierie Outils Informatiques Octave Travaux Dirigés TD n°5 Août 2009
Vecteurs dans l’espace 1) structures utilisées Nous allons manipuler des points dans l’espace et des vecteurs. Nous allons pour ce faire utiliser des matrices (au sens Octave) pour représenter ces structures dans un repère orthonormé (O,i,j,k) tridimensionnel
2) Définitions de fonctions -
Ecrire une fonction Creer_Point.m qui créé un point 3D à partir des coordonnées (x,y,z).
-
Ecrire une fonction Affiche_Point.m qui permet d’afficher un point (sous forme d’un « + ») dans l’espace Ecrire une fonction Vectorise.m qui définit le vecteur AB à partir des coordonnées des points A et B.
-
-
Ecrire une fonction Produit_Vectoriel.m qui renvoie le vecteur résultat du produit vectoriel de 2 vecteurs.
-
Ecrire une fonction Produit_Scalaire.m qui renvoie le produit scalaire de 2 vecteurs.
-
Ecrire une fonction Norme.m qui calcule la norme d’un vecteur.
-
Ecrire une fonction Equation_Plan.m qui, à partir de 3 points donne l’équation du plan correspondant sous la forme de 4 coefficients représentant l’équation ax + by + cy + d = 0
-
Ecrire enfin une fonction Affiche_Plan.m qui affiche le plan en 3D
3) Ecrire un programme qui permet : - à l’utilisateur de rentrer les coordonnées dans l’espace de 3 points. - de déterminer les coordonnées du centre de gravité du triangle dont les sommets correspondent aux 3 points définis par l’utilisateur - de calculer le périmètre et l’aire du triangle. - de calculer l’équation du plan passant par les 3 points et d’afficher ce plan
Rappels Caractéristiques du centre de gravité d’un triangle : GA + GB + GC = 0 et 3 AG = AB + AC Surface du triangle ABC : S =
Exemple A (1,1,0) B (5,1,0) C (3,4,0)
1 AB ∧ AC 2
Page 2
Travaux Dirigés Outils informatiques
Solution Création des fichiers .m (définir les fonctions) dans le répertoire td5 Creer_Point.m function pt = Creer_Point(x,y,z) %CREER_POINT(x,y,z) Créé un point à partir des coordonnées pt = [x,y,z]; end Affiche_Point.m function Affiche_Point(v) %AFFICHEPOINT(v) Affiche un point 3D donné en argument plot3(v,"+"); end Vectorise.m function v = Vectorise(pt1,pt2) %VECTORISE(pt1,pt2) Créé un vecteur AB à partir de deux points v = pt2-pt1; end Produit_Vectoriel.m function uv = Produit_Vectoriel(u, v) %PRODUIT_VECTORIEL(u,v) Calcule le produit vectoriel de deux vecteurs u x v uv = [(u(2)*v(3) - u(3)*v(2)), u(3)*v(1) - u(1)*v(3), u(1)*v(2) - u(2)*v(1)]; end Produit_Scalaire.m function us = Produit_Scalaire(u, v) %PRODUIT_SCALAIRE(u,v) Calcule le produit scalaire de deux vecteurs us = u(1)*v(1) + u(2)*v(2) + u(3)*v(3); end
u x v
Norme.m function n = Norme(v) %NORME(v) Calcule la norme du vecteur v n =sqrt (v(1)*v(1) + v(2)*v(2) + v(3)*v(3)); end Equation_Plan.m function eq = Equation_Plan(A, B, C) % EQUATION_PLAN(A,B,C) Calcule l'équation du plan à paratir de 3 points A B C % Calcul du vecteur AB AB = Vectorise(A,B); AC = Vectorise(A,C); % calcul du vecteur normal n = Produit_Vectoriel(AB,AC); % Soit M(x, y, z) appartenant au plan, on sait que AM. n = 0 (produit scalaire) d'où % un plan est défini par l'équation ax + by + cz + d = 0 a = n(1);
Travaux Dirigés Outils informatiques
b = n(2); c = n(3); d = -(A(1)*n(1)) - (A(2)*n(2)) - (A(3)*n(3)); eq = [a b c d]; end Affiche_Plan.m function Affiche_Plan(eq) % AFFICHE_PLAN(eq) Affiche en 3D l'équation du plan donnée en argument % carré e 10 de côté avec un pas de 0.5 [x y] = meshgrid(-10:0.5:10); % equation ax + by + cz + d = 0 d'où z = -(a/c)x -(b/c)y - (d/c) si c =/= 0 z = -(eq(1)/eq(3))*x -(eq(2)/eq(3))*y -(eq(4)/eq(3)); mesh(z); end td5.m # 1er point Ax = input ("Entrez la coordonnee x du point A -> "); Ay = input ("Entrez la coordonnee y du point A -> "); Az = input ("Entrez la coordonnee z du point A -> "); A = Creer_Point(Ax,Ay,Az); # 2ème point Bx = input ("Entrez la coordonnee x du point B -> "); By = input ("Entrez la coordonnee y du point B -> "); Bz = input ("Entrez la coordonnee z du point B -> "); B = Creer_Point(Bx,By,Bz); # 3ème point Cx = input ("Entrez la coordonnee x du point C -> "); Cy = input ("Entrez la coordonnee y du point C -> "); Cz = input ("Entrez la coordonnee z du point C -> "); C = Creer_Point(Cx,Cy,Cz); # Créer vecteur AB vAB = Vectorise(A,B); # Créer vecteur AC vAC = Vectorise(A,C); # Créer vecteur OA O = Creer_Point(0,0,0); vOA = Vectorise(O,A); disp("Vecteur AB="), disp(vAB); disp("Vecteur AC="), disp(vAC); # calcul du vecteur 3AG (3vAG = vAB + vAC) v3AG = vAB + vAC; vAG = v3AG / 3; vOG = vOA + vAG; disp("Point Centree de Gravite G ="), disp(vOG); # Calcul de l'aire du triangle S = 1/2 norme(produit_vectoriel(AB,AC)) S = 0.5 * Norme(Produit_Vectoriel(vAB, vAC)); disp("Surface du Triangle ABC="), disp(S);
Page 3
Page 4
Travaux Dirigés Outils informatiques
% Calcul de l'équation du plan eq = Equation_Plan(A, B, C); disp("Equation du plan : ") , disp(eq(1)), disp("x +"), disp(eq(2)), disp("y +"), disp(eq(3)), disp("z +"), disp(eq(4)), disp("=0"); % Affichage de plan Affiche_Plan(eq); return
Appel à l’exercice (se déplacer dans le répertoire du td puis lancer)
> cd c:/octave > td5 <entree>