Per quanto riguarda le funzioni che creano degli oggetti grafici (come "plot", "rectangle", ecc.) l'handle è il valore "ritornato" da esse.
Nel tuo codice c'è un errore.
Nel "main" crei il primo cerchio con la funzione rectangle la quale ti ritorna l'handle "uomo".
Nella prima iterazione, del ciclo for, quando "p_mode" è uguale a 0, cancelli l'handle (uomo) il che cancella il cerchio, subito dopo, plotti il punto (che dovrebbe corrispondere al cerchio) usando la funzione "plot" la quale ti restituisce l'handle "ph".
Successivamente, dopo la "pausa" cancelli l'oggetto grafico "ph".
Nella seconda iterazione, viene chiamata nuovamente la funzione "delete" per cancellare "uomo", ma questo handle non esiste più perchè è stato cancellato nella prima iterazione e non è stato più creato.
Il codice dovrebbe darti un messaggio di errore e fermarsi dopo la prima iterazione.
Nel ciclo for dovresti creare il cerchio continuando ad usare la funzione "rectangle" nella chiamata alla quale devi aggiornare solo i primi due parametri della "position" e farti ritornare l'handle "uomo" in modo che venga creato ad ogni iterazione e, quindi possa essere cancellato.
Una volta risolto il problema del cerchio, per far muovere i "robot" nella stessa direzione dell'"uomo", potresti:
- prima del coclo for
[*] calcolare la direzione (l'angolo) che segue il cerchio (arcotangente tra i due segmenti dati da y_fin-y_ini e x_fin-x_ini). Usa "atan2" e considera che la direzione Nord (angolo=0) corrisponde, in MatLab a 90° per cui dovrai sottrarre 90° al valore ritornato da atan2
[*] una volta calcolata la direzione, puoi usare la matrice di rotazione
mx=[cos(heading) -sin(heading)
sin(heading) cos(heading)];
per ruotare i due "robot" (le coordinate dei robots).
- all'interno del ciclo for
[*] plottare il cerchio nelle nuove posizioni
[*] plottare i due triangoli aumentando, ad ogni iterazione, le loro coordinate x e y della stessa quantità della quale si incrementano quelle del cerchio
Considera che, per come hai definito la funzione "plot_uomo" puoi definire più di un punto.
Se definisci più di un punto, deve inserire quanto suggerito sopra, all'interno di un ciclo for che iteri sui punti che hai selezionato.