Per impostazione predefinita, la matrice di rotazione utilizza il punto di origine come centro della rotazione. Per ruotare attorno a un punto arbitrario, devi sottrarre la distanza all'origine usando una matrice di traslazione, fai la rotazione e poi traduci. Tranne che questo non sembra funzionare così bene per me. Ho il seguente codice (assumere il mio oggetto è 100x100 con un centro a 50,50):Rotation Matrix sul punto arbitrario
t = IDENTITY;
t = translate(t, -50, -50);
t = rotate(t, theta);
t = translate(t, 50, 50);
Purtroppo, se si applica questa trasformazione matrice t
al mio oggetto, l'oggetto è posizionato correttamente.
Ho implementato un rapido jsfiddle per dimostrare il mio problema: http://jsfiddle.net/9M3uy/67/
Nel JSFiddle, il rosso ruotato piazza è dove la rotazione dovrebbe essere finito (per gentile concessione di costruzione trasformare origine di CSS3), e il il quadrato blu ruotato è dove finisce il mio calcolo (il verde sarebbe stato il quadrato originale non ruotato).
Qualche idea? Sto solo non capendo come tradurre, ruotare, tradurre i lavori meccanici o sto facendo qualcosa di terribilmente sbagliato?
Non riesco a vedere il verde ... –
Devi utilizzare Chrome o Safari. Ho aggiornato il JSFiddle per includere il CSS necessario per tutti i browser. – syazdani
Sì! Ma sembra che tu abbia trovato la risposta! Sono arrivato troppo tardi –