2009-03-16 10 views
3

Ich habe eine MFC-Anwendung, wo der Benutzer die Maus um einen Kreis circonference mit einer Ziehbewegung bewegen muss. Ich muss die Anzahl der Grad während dieser Maus ziehen "Drehung" und ich muss wissen, ob es im oder gegen den Uhrzeigersinn ist.Wie kann man feststellen, ob sich die Maus im oder gegen den Uhrzeigersinn bewegt?

Zuerst, um die Drehrichtung zu bestimmen, habe ich x-Koordinate zwischen der aktuellen Mausposition und der Mausposition verglichen, wo der Benutzer geklickt hat, um das Ziehen zu initiieren. Das funktioniert gut, bis der Benutzer sich um 180 Grad dreht.

Wie kann ich mit der anderen Hälfte des Kreises umgehen?

Antwort

1

Lesen Sie über cross products. Das Berechnen eines Kreuzprodukts zwischen den X- und Y-Vektoren (Unterschiede vom Startpunkt) ergibt immer zuverlässig die Rotationsrichtung.

6

Sie benötigen mindestens drei geordnete Punkte, um festzustellen, ob sich jemand im Uhrzeigersinn oder im Gegenuhrzeigersinn bewegt. Mit nur zwei Punkten ist es nicht offensichtlich, ob (zum Beispiel) jemand um 90 Grad oder -270 Grad gedreht wurde. Einfach das Kreuzprodukt von Anfang und Ende zu nehmen, wird also nicht funktionieren.

Probieren Sie die Maus während des Ziehens aus, um die zusätzlichen Informationen zu erhalten, die Sie benötigen, und nehmen Sie dann inkrementelle Kreuzprodukte zwischen jedem Paar aufeinanderfolgender Punkte auf. Das wird dir sagen, was du wissen willst. Allerdings müssen Sie schnell genug testen, dass keine Drehung von mehr als 180 Grad hätte auftreten können; sonst landen Sie wieder in einer mehrdeutigen Situation.