Plottare un punto che si muove nello spazio

di il
1 risposte

Plottare un punto che si muove nello spazio

Buongiorno,
avrei la necessità di plottare la traiettoria di un punto del quale conosco solo la terna di coordinate che occupa in 4 istanti diversi che definisco t1,t2,t3,t4.
Supponiamo quindi che io sia in possesso di 3 vettori di coordinate:

X=[x1,x2,x3,x4];
Y=[y1,y2,y3,y4];
Z=[z1,z2,z3,z4];

Sapendo che xi,yi,zi, sono le coordinate del punto all'istante ti, desidero plottare un punto (e la sua traiettoria) che si muove, con una velocità da me imposta (o comunque in modo sufficientemente lento da poter vederne la traiettoria), dalla prima alla quarta terna.
Vorrei disegnare, in pratica, la spezzata descritta dal punto che si muove tra le 4 terne di coordinate.

Sperando di essere stato sufficientemente chiaro, ringrazio già chiunque possa darmi delle indicazioni.

1 Risposte

  • Re: Plottare un punto che si muove nello spazio

    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.
Devi accedere o registrarti per scrivere nel forum
1 risposte