6
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 à 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

Linux Octave TD5 + SOLUTIONS

Embed Size (px)

Citation preview

Page 1: Linux Octave TD5 + SOLUTIONS

http://www.ups-tlse.fr

L3 Mécanique Ingénierie

Outils InformatiquesOctave

Travaux DirigésTD 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 à 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

RappelsCaractéristiques du centre de gravité d’un triangle : et

Surface du triangle ABC :

Exemple

A (1,1,0)B (5,1,0)

Page 2: Linux Octave TD5 + SOLUTIONS

Page 2 Travaux Dirigés Outils informatiques

C (3,4,0)

Page 3: Linux Octave TD5 + SOLUTIONS

Travaux Dirigés Outils informatiques Page 3

Solution

Création des fichiers .m (définir les fonctions) dans le répertoire td5Creer_Point.m

function pt = Creer_Point(x,y,z)%CREER_POINT(x,y,z) Créé un point à partir des coordonnéespt = [x,y,z];end

Affiche_Point.m

function Affiche_Point(v)%AFFICHEPOINT(v) Affiche un point 3D donné en argumentplot3(v,"+");

end

Vectorise.m

function v = Vectorise(pt1,pt2)%VECTORISE(pt1,pt2) Créé un vecteur AB à partir de deux pointsv = 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 vuv = [(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 u x vus = u(1)*v(1) + u(2)*v(2) + u(3)*v(3);end

Norme.m

function n = Norme(v)%NORME(v) Calcule la norme du vecteur vn =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 ABAB = Vectorise(A,B);AC = Vectorise(A,C);% calcul du vecteur normaln = 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 = 0a = n(1);

Page 4: Linux Octave TD5 + SOLUTIONS

Page 4 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 pointAx = 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 pointBx = 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 pointCx = 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 ABvAB = Vectorise(A,B);

# Créer vecteur ACvAC = Vectorise(A,C);

# Créer vecteur OAO = 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 5: Linux Octave TD5 + SOLUTIONS

Travaux Dirigés Outils informatiques Page 5

% 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 planAffiche_Plan(eq);return

Appel à l’exercice (se déplacer dans le répertoire du td puis lancer)

> cd c:/octave> td5 <entree>