Frage

Ich baue eine Rad Menüsteuerung. Die Idee ist, dass Sie das Rad drehen, bis das Element, das Sie auf handeln wollen in Sicht ist, dann klicken Sie auf sie oder was auch immer. Ich versuche, herauszufinden, wie die Benutzer-Mausbewegungen (x & y) in die Gradzahl übersetzen das Rad zu drehen. Ich kann das alles umzusetzen, ich habe gerade die Mathematik bin fehlt die Umwandlung zu tun. Jede Hilfe oder Zeiger werden geschätzt!

War es hilfreich?

Lösung

Winkel zwischen Mauspositionen

Wenn der Benutzer die Maus aus [x1, y1] bewegt sich auf [x2, y2], was Sie im Grunde wollen, ist

finden

? = ? 1 -? 2

Dabei gilt:

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

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

Nun all dies hängt davon ab, wo Sie Ihren Ursprung (Mitte des Rades) definieren. Wenn Ihr Ursprung ist [x0, y0], dann subtrahiert nur diese Werte von den tatsächlichen Maus-Koordinaten.

Auch auf dem Bildschirm, das Koordinatensystem steht auf dem Kopf, so ist 0,0 in der oberen linken Ecke anstelle von links unten, so dass Sie das Flip brauchen würde, aber die Mathematik ist im Wesentlichen gleich.

Beachten Sie auch, dass der Winkel gemessen in Radianten und nicht Grad.

Andere Tipps

Nehmen Sie die atan2() von zwei aufeinanderfolgenden Positionen versetzt von der Mitte der Steuerung und den Wert ändern, indem das Delta der mit einer Konstanten multipliziert Winkel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top