Question

Je construis une commande de menu de roue. L'idée est que vous faites tourner la roue jusqu'à ce que l'élément que vous souhaitez agir est en vue, puis vous cliquez dessus ou autre. J'essaie de comprendre comment traduire les mouvements de la souris de l'utilisateur (x et y) dans le nombre de degrés pour faire tourner la roue. Je peux mettre en œuvre tout, je ne me manque le calcul pour effectuer la conversion. Toute aide ou pointeurs sont appréciés!

Était-ce utile?

La solution

Angle entre les positions de souris

Si l'utilisateur déplace la souris de [x1, y1] à [x2, y2], ce que vous voulez essentiellement est de trouver

θ = θ 1 2

Où:

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

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

Maintenant tout cela dépend de l'endroit où vous définissez votre origine (centre de la roue). Si votre origine est [x0, y0], puis juste soustraire les valeurs des coordonnées de la souris réelle.

également à l'écran, le système de coordonnées est à l'envers, donc est en 0,0 haut à gauche au lieu de bas à gauche, de sorte que vous auriez besoin de retourner, mais le calcul est essentiellement le même.

Notez également que l'angle est mesuré en radians et non degrés.

Autres conseils

Prendre la atan2() de deux positions ultérieures décalé par rapport au centre de la commande et de modifier la valeur du delta des angles multiplié par une constante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top