Ci sono diversi modi per plottare un punto in 3D e dare la sensazione di movimento.
Uno dei più semplici consiste nell'inserire le istruzioni di plottaggio all'interno di un loop che cicli sugli elementi della matrice o dei vettori che contengono le coordinate dei punti della traiettoria.
L'inserimento dell'istruzione "
hold on" fa si che ad ogni iterazione i punti disegnati non vengano cancellati, ma che si aggiungano.
Inserendo l'istruzione
pause(t) (con "t" tempo in secondi - anche < 1)
Aggiungendo uno o più di uno, punti ad ogni iterazione si ottiene un
effetto movimento.
Nell'esempio che segue, la traiettoria di un punto viene plottata in quattro modi:
[*] un punto che segue una traiettoria
[*] una linea che descrive la traiettoria
[*] una serie di linee che danno un'idea della proiezione e dell'altezza di ogni punto della traiettoria [*] la proiezione della traiettoria sul piano
(X,Y)
La sezione dello script "
selezione elementi da plottare" permette di scegliere come plottare la traiettoria.
%
% Generazione punti traiettoria di esempio
%
t=0:.1:4*pi;
np=length(t);
x=cos(t);
y=sin(t);
z=1:np;
%
% selezione elementi da plottare
%
on=1;
off=0;
enable_plot_dot_3d=on;
enable_plot_line_3d=on;
enable_plot_vertical=on;
enable_plot_dot_2d=on;
enable_plot_line_2d=on;
plot3(x(1),y(1),z(1))
%
% Impostazione limiti assi
%
xlim([min(x) max(x)]);
ylim([min(y) max(y)]);
zlim([min(z) max(z)]);
grid
hold on
for i=2:np-1
% plottaggio "traiettoria
if(enable_plot_dot_3d)
plot3(x(i:i+1),y(i:i+1),z(i:i+1),'-r','linewidth',2)
end
% plottaggio "punto" della traiettoria
if(enable_plot_line_3d)
plot3(x(i+1),y(i+1),z(i+1),'o','markerfacecolor','r')
end
% plottaggio con evidenziazione dell'altezza dei puntio della traiettoria
if(enable_plot_vertical)
plot3([x(i+1) x(i+1)],[y(i+1) y(i+1)],[0 z(i+1)],'b')
end
% plottaggio della proiezione della traiettoria sul piano (X,Y)
if(enable_plot_dot_2d)
plot(x(i:i+1),y(i:i+1),'-r','linewidth',2)
end
% plottaggio "punto" della traiettoria sul piano (X,Y)
if(enable_plot_line_2d)
plot(x(i+1),y(i+1),'o')
end
% "velocità" di plottaggio definita come pausa (in secondi) tra il
% plottagio di due punti
pause(.1)
end
Hope this helps.