2010-11-09 32 views
0

Je construis un contrôle de menu de roue. L'idée est de tourner la roue jusqu'à ce que l'objet sur lequel vous voulez agir soit en vue, puis cliquez dessus ou autre. J'essaie de comprendre comment traduire les mouvements de la souris de l'utilisateur (x & y) en nombre de degrés pour faire tourner la roue. Je peux tout mettre en œuvre, il me manque juste les maths pour faire la conversion. Toute aide ou pointeurs sont appréciés!Comment convertir les mouvements de la souris en rotation d'un élément

Répondre

3

Angle between mouse positions

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

θ = θ -θ

Où:

θ = Math.atan2 (y1, x1);

= Math.atan2 (y2, x2); Maintenant, tout cela dépend de l'endroit où vous définissez votre origine (centre de votre roue). Si votre origine est [x0, y0], il vous suffit de soustraire ces valeurs des coordonnées réelles de la souris.

Également à l'écran, le système de coordonnées est à l'envers, donc 0,0 est en haut à gauche plutôt qu'en bas à gauche, donc vous devez inverser cela, mais le calcul est essentiellement le même.

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

1

Prenez les atan2() de deux positions suivantes décalées par rapport au centre du contrôle et changez la valeur du delta des angles multiplié par une constante.

+0

... Quoi? Pourquoi 'atan2()'? –

+0

@Christian: Parce qu'il transforme les décalages x et y en angle. –

+0

J'étais avec vous jusqu'à la fin. Multiplié par quelle constante? –