Problema con rotazione figura geometrica

di il
4 risposte

Problema con rotazione figura geometrica

Buongiorno,
Ho il seguente problema e non riesco a capire dove sia l'errore. Ho definito una funzione che mi disegna un triangolo e poi lo ruota sulla base di un orientamento che viene passato come parametro.
Ho provato con uno script inserendo direttamente dei gradi come parametro ed effettivamente la figura ruota, ma quando richiamo invece la funzione il triangolo non viene ruotato.
La funzione è la seguente:

function area_safe = area_safe(fig,xx_u,orientamento,ambiente)
dist1 = 0.15;
dist2 = 0.87;
ambiente = polyshape([-0.5 0.5 0.5 -0.5],[-0.5 -0.5 0.5 0.5]);
area_safe1 = polyshape({[xx_u(1)-dist2 xx_u(1) xx_u(1)+dist2]},{[xx_u(2)+dist1 xx_u(2) xx_u(2)+dist1]});
area_safe2 = rotate(area_safe1,orientamento,[xx_u(1) xx_u(2)]);
hold on
area_safe = intersect(ambiente,area_safe2) ; 
end
Sto verificando se il problema sia quindi nel resto del codice. Il valore dell'orientamento è contenuto in una matrice (in particolare devo prendere il valore che sta in posizione (1,3)). Quindi richiamando la funzione io sostituisco a orientamento nome_matrice(1,3). Questo valore lo ottengo utilizzando la funzione atan2.

Secondo voi la funzione è corretta? Potrebbe esserci qualche problema dovuto alla tipologia di orientamento che mi restituisce atan2 e quello richiesto da rotate?

Grazie

4 Risposte

  • Re: Problema con rotazione figura geometrica

    Ci sono alcuni punti non chiari:
    [*] la funzione "rotate" che chiami nello script l'hai scritta tu? In questo caso dovresti pubblicarla in modo che la si possa verificare / provare
    [*] se usi la funzione "rotate" di MatLab, dovresti ricevere un messaggio di errore in quanto la funzione non genera nessun output; inoltre, la funzione di MatLab modifica solo i valori "XData", "YData" e "YData" del grafico, ma non i valori originali usati per plottare la figura

    Dovresti, inoltre, pubblicare tutti i dati di input in modo che si possa provare ad eseguire il codice per individuare eventuali errori.
  • Re: Problema con rotazione figura geometrica

    Si utilizzo la funzione rotate di Matlab. Non ricevo alcun messaggio di errore ma semplicemente non mi ruota la figura. Cosa vuol dire che non genera alcun output? potrebbe essere questo il problema?
  • Re: Problema con rotazione figura geometrica

    Come riportato nella documentazione, la funzione base "rotate" () non genera nessun valore di output:
    rotate

    Rotate object about specified origin and directioncollapse all in page
    Syntax
    rotate(h,direction,alpha)
    rotate(...,origin)
    mentre tu la invochi
    
    area_safe2 = rotate(area_safe1,orientamento,[xx_u(1) xx_u(2)]);
    
    specificando un parametro di output (area_safe2) questo dovrebbe generare un messaggio di errore.

    Esistono altre funzioni chiamate "rotate" in altri toolbox di MatLab, dovresti verificare quale di esse viene usata (prova con il comando "which rotate" e verifica la documentazione relativa).

    Una soluzione alternativa potrebbe essere calcolare la nuova posizione della figura con la matrice di rototraslazione ().
  • Re: Problema con rotazione figura geometrica

    Grazie proverò a documentarmi e spero di risolvere cosi il problema.
Devi accedere o registrarti per scrivere nel forum
4 risposte