Soviet_Mario ha scritto:
> grazie mille anche a te! Questa sembra pure una soluzione
> "precotta e predigerita" :D lol.
Naturalmente non ti sei accorto che la mia sol. e quella di ElFil sono
diverse...
Il che non vuol dire che una sia giusta e l'altra sbagliata.
Speravo di poter evitare di dirtelo, ma purtroppo l'argomento è un
gigantesco casino.
L'articolo di wiki che ti ho indicato ha una sezione intitolata
"Ambiguities".
Dagli una scorsa, senza cercare di capire, ma solo per renderti conto
che il casino è noto e dichiarato.
Il problema è che tu gli angoli li devi dare in pasto alla tua
funzione rotate() e non so se hai un manuale che descriva
*esattamente* che cosa fa questa funzione.
La soluzione sarebbe di scoprirlo per tentativi, ma non so se ne sei
capace.
Qualche suggerimento.
Per prima cosa, prova a dare alla funzione tre angoli di cu uno solo
non nullo e semplice: per es 90°:
rotate(90,0,0)
rotate(0,90,0)
rotate(0,0,90).
Se puoi vedere le matrici, capisci che cosa fanno. Saranno rotazioni
di 90°, ma devi vedere rispetto a quali assi e in che verso.
Poi prova a comporre due rotazioni, per es. rotate(90,0,0) e
rotate(0,90,0).
Verifica se rotate(90,90,0) è la matrice prodotto e in che ordine.
Fatto questo potrai sapere se corrisponde o no alla matrice come è
scritta nell'articolo.
C'è pure un'altra cosa da verificare: che verso è preso positivo per i
tre angoli di roll, pitch, yaw.
Le matrici dell'articolo prendono positive le rotazioni antiorarie
rispetto agli assi indicati.
Ma non è detto che sia sempre così.
Esempio.
Se hai una barca, direi che l'asse x sia sempre da poppa a prua.
L'asse z punta verso lo zenit.
Di conseguenza l'asse y punta verso sinistra (è babordo o tribordo?)
guardando la prua.
Ora il problema è col beccheggio (pitch).
Secondo le convenzioni che ho detto, un beccheggio positivo sarebbe
una rotazione attorno all'asse y in senso antiorario.
Quindi un beccheegio di +10° *abbassa* la prua di 10°.
Ho una gran paura che la convenzione marinara sia opposta, ma posso
sbagliare.
Lo puoi verificare come ho già detto: dopo che hai identificato quale
dei tre arogomenti di rotate è l'angolo di pitch, esegui un pitch di
10° e guarda l'effetto che fa.
La stessa cosa dovresti fare per rollio e imbardata, anche se in
questi casi sarei più tranquillo.
Ma una verifica non fa male.
E scriviti tutto!
Sia per ricordartelo, sia per chiedere aiuto, se del caso.
Ti aspettano giorni di puro divertimento :-D
--
Elio Fabri
Received on Sun Nov 07 2021 - 21:33:54 CET