Pregunta

Estoy construyendo un control de menú de la rueda. La idea es hacer girar la rueda hasta que el elemento que desea actuar sobre está a la vista, a continuación, hacer clic en él o lo que sea. Estoy tratando de encontrar la manera de traducir los movimientos del ratón del usuario (X e Y) en el número de grados para girar la rueda. Puedo poner en práctica todo, sólo me falta la matemáticas para hacer la conversión. Cualquier ayuda o punteros son apreciados!

¿Fue útil?

Solución

ángulo entre las posiciones de ratón

Si el usuario mueve el ratón de [x1, y1] a [x2, y2], lo que básicamente quiere es encontrar

? = ? 1 -? 2

Donde:

? 1 = Math.atan2 (y1, x1);

? 2 = Math.atan2 (y2, x2);

Ahora, todo esto depende de donde se define el origen (centro de la rueda). Si su origen es [x0, y0], a continuación, sólo restar los valores de las coordenadas del ratón real.

También en pantalla, el sistema de coordenadas está al revés, por lo que 0,0 se encuentra en la parte superior izquierda en lugar de la parte inferior izquierda, por lo que había necesidad de dar la vuelta, pero la matemática es esencialmente la misma.

Tenga en cuenta también que el ángulo se mide en radianes, no grados.

Otros consejos

Tome la atan2() de dos posiciones posteriores desplazamiento desde el centro del control y cambiar el valor por el delta de los ángulos multiplicado por una constante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top