% ---------------------------------------------------------------------- % File: ese2_31.m % % Soluzione dell'esercizio 2.31: % ---------------------------------------------------------------------- % Esercizio: Scrivete un programma che dati un punto e una retta in % forma parametrica nello spazio tridimensionale disegni il punto, la % sua proiezione ortogonale sulla retta, contrassegnandola da un % asterisco, e un tratto della retta contenente la proiezione del punto % (tutto nello stesso disegno). function ese2_31 (A, B, P) % Retta determinata dai punti A B, il punto esterno e' P. % Tutti i vettori sono colonne. % I punti della retta data sono della forma % (1-t)A + tB % al variare di t. V = B - A; % Vettore lungo la retta. V1 = (1/norm(V))*V; % Versore unitario della retta. U = P - A; % Vettore A->B. c = dot(U, V1); % Componente di U lungo la retta. Q = A+c*V1; % Proiezione di P sulla retta. l = norm(U); A1 = Q + l*V1; % I due punti sulla retta B1 = Q - l*V1; % con distanza c da Q. % Adesso traccia il disegno. hold on; grid on; axis equal; plot3([A1(1), B1(1)], [A1(2), B1(2)], [A1(3), B1(3)]); plot3([Q(1) P(1)], [Q(2), P(2)], [Q(3), P(3)], '--g'); plot3(Q(1), Q(2), Q(3), '*r'); plot3(P(1), P(2), P(3), '*k'); hold off;