Disclaimer: sono un programmatore di giochi professionale e uso i quaternioni quasi tutti i giorni ma sono vicini alla magia nera per me. Sono relativamente a mio agio con la matematica, ma i numeri immaginari mi hanno sempre confuso. Tendo a trattare i quat come utili e finisco per invertire le moltiplicazioni più di una volta. Provo a ragionare su di loro come farei con le matrici con scarso successo.
Comunque....
Ciò che mi sconcerta è il seguente. Quando voglio ruotare un oggetto attorno al suo asse locale, moltiplico la sua rotazione con il quaternione che rappresenta la rotazione che voglio applicare. È quindi una rotazione nello spazio locale.
Ora, se voglio ruotarlo attorno ad un asse nello spazio del mondo, il mio ragionamento sarebbe: prendere la rotazione nello spazio del mondo come quaternione. Moltiplica l'inverso della rotazione del mio oggetto con questo quaternione. Questo porterà la mia rotazione del mondo nello spazio locale. Moltiplica la mia rotazione con questo nuovo quaternione. cioè: newRot = oldRot * (inverso oldRot * worldRot)
Tuttavia, ciò che devo fare è newRot = oldRot * (inversa oldRot * worldRot) * oldRot.
Perché, dopo aver moltiplicato con il quat inverso, devo ancora moltiplicare con il mio quat prima di applicarlo? So che deve esserci una ragione valida e perfetta, ma non riesco a ragionare per uscirne ed è frustrante come diamine. Ho provato le varie domande frequenti e quant'altro, ma la maggior parte va in profondità in matematica, rendendomi meno chiaro.
Qualcuno che può spiegarmelo come se avessi 5 anni?
I try to reason about them like I would with matrices
- allora sei sulla strada giusta. Se hai capito come ruotare attorno agli assi dell'oggetto e agli assi del mondo usando le matrici, puoi fare lo stesso usando i quaternioni. L'ordine di moltiplicazione è lo stesso per matrici e quaternioni.