TP 5 - Algorithmes de tri (Correction)
Nous allons manipuler dans ce TP des points dans l’espace (en trois dimensions donc) et des vecteurs (au sens mathématique). Nous allons pour ce faire utiliser des vecteurs (au sens Octave ici) pour représenter ces structures dans un repère orthonormé ($O, i, j, k$) tridimensionnel.
Un point et un vecteur seront donc représentés par un tableau (vecteur octave, colonne ou ligne à votre choix) durant ce TP.
<aside>
❗ Nota :
- La plupart des fonctions demandées dans ce TP existent déjà sous GNU Octave ! L’objectif de ce TP est de les réécrire en utilisant des structures propres à notre programmation
- Vous utiliserez dans vos fonctions la notion de Point 3D et Vecteur 3D, représentés dans GNU Octave par un tableau à 3 indices (v(1) représentant la coordonnée en x du Vecteur 3D v, etc …)
</aside>
Exercice 1 - Fonctions et repère orthonormé
- Ecrire une fonction Pt = Demande_Point() qui créé un point 3D à partir des entrées de l’utilisateur (vous utiliserez exceptionnellement l’instruction input dans une fonction)
function P = Demande_Point()
P(1) = input('Entrez la coordonnee en x : ')
P(2) = input('Entrez la coordonnee en y : ')
P(3) = input('Entrez la coordonnee en z : ')
end
- Ecrire une fonction Pt = Creer_Point(x,y,z) qui créé un point 3D à partir des coordonnées $x,y,z$ données en paramètre
function P = Creer_Point(x,y,z)
P = [x;y;z];
end
- Ecrire une fonction Affiche_Point(Pt) qui permet d’afficher un point (sous forme d’un
« + ») dans l’espace (utiliser la fonction plot3 pour afficher un point en 3D)
function Affiche_Point(P)
plot3(P(1),P(2),P(3),"+r");
end
- Ecrire une fonction V=Vectorise(Pt1,Pt2) qui définit le vecteur $\overrightarrow{AB}$ à partir des points $A$ et $B$
function V = Vectorise(P1,P2)
V = P2-P1;
end
- Ecrire une fonction PV=Produit_Vectoriel(V1,V2) qui renvoie le vecteur résultat du
produit vectoriel de 2 vecteurs.
function PV=Produit_Vectoriel(V1,V2)
PV(1) = V1(2)*V2(3) - V1(3)*V2(2);
PV(2) = V1(3)*V2(1) - V1(1)*V2(3);
PV(3) = V1(1)*V2(2) - V1(2)*V2(1);
end
- Ecrire une fonction PS=Produit_Scalaire(V1,V2) qui renvoie le produit scalaire de 2
vecteurs.
function PS = Produit_Scalaire(V1,V2)
PS = V1(1)*V2(1) + V1(1)*V2(1) + V1(3)*V1(3);
end
- Ecrire une fonction N=Norme(V) qui calcule la norme (distance) d’un vecteur.
function N=Norme(V)
N = sqrt(V(1)^2 + V(2)^2 + V(3)^2);
end
- Ecrire une fonction Affiche_Triangle(Pt1,Pt2,Pt3) qui affiche un triangle dans un
espace 3D à partir de 3 points donnés en paramètre.
function Affiche_Triangle(A,B,C)
% On trace trois lignes (entre A et B, B et C et C et A)
X = [A(1) B(1) C(1) A(1)];
Y = [A(2) B(2) C(2) A(2)];
Z = [A(3) B(3) C(3) A(3)];
plot3(X,Y,Z, "k");
end