Come convertire i movimenti del mouse alla rotazione di un elemento
Domanda
Sto costruendo un controllo di menu ruota. L'idea è si gira la ruota fino a quando la voce che si desidera agire su è in vista, poi si fa clic su di esso o qualsiasi altra cosa. Sto cercando di capire come tradurre i movimenti del mouse dell'utente (X & Y) nel numero di gradi per far girare la ruota. Posso realizzare tutto, ho solo manca la matematica per eseguire la conversione. Qualsiasi aiuto o puntatori sono apprezzati!
Soluzione
Se l'utente sposta il mouse da [X1, Y1] a [x2, y2], ciò che si vuole in sostanza è quello di trovare
? = ? 1 -? 2
Dove:
? 1 = Math.atan2 (y1, x1);
? 2 = Math.atan2 (y2, x2);
Ora, tutto questo dipende da dove si definisce la vostra origine (centro della ruota). Se la vostra origine è [x0, y0], poi basta sottrarre questi valori dalle coordinate del mouse vero e proprio.
Inoltre sullo schermo, il sistema di coordinate è a testa in giù, in modo 0,0 è in alto a sinistra invece che in basso a sinistra, quindi avresti bisogno di capovolgere questo, ma la matematica è essenzialmente la stessa.
Si noti inoltre che l'angolo viene misurato in radianti e non gradi.
Altri suggerimenti
Prendere la atan2()
di due posizioni successive offset dal centro di controllo e modificare il valore delta degli angoli moltiplicato per una costante.