è possibile ottenere la direzione del mouse (Sinistra, Destra, Su, Giù) in base all'ultima posizione del mouse e alla posizione corrente? Ho scritto il codice per calcolare l'angolo tra due vettori, ma non sono sicuro che sia giusto.Come ottenere la direzione del mouse da coordinate del mouse
Qualcuno può indicarmi la direzione giusta?
public enum Direction
{
Left = 0,
Right = 1,
Down = 2,
Up = 3
}
private int lastX;
private int lastY;
private Direction direction;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
lastX = e.X;
lastY = e.Y;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
double angle = GetAngleBetweenVectors(lastX, lastY, e.X, e.Y);
System.Diagnostics.Debug.WriteLine(angle.ToString());
//The angle returns a range of values from -value 0 +value
//How to get the direction from the angle?
//if (angle > ??)
// direction = Direction.Left;
}
private double GetAngleBetweenVectors(double Ax, double Ay, double Bx, double By)
{
double theta = Math.Atan2(Ay, Ax) - Math.Atan2(By, Bx);
return Math.Round(theta * 180/Math.PI);
}
Direi che il metodo dell'angolo non è corretto, punto. La differenza di angolo tra due vettori non ti dice nulla sulla direzione effettiva (sul piano cartesiano) che il punto si è spostato. –
Stai provando ad accettare il jitter del mouse? - Ad esempio se l'utente ha spostato costantemente 100 px a destra, ma a metà strada jitter avanti e indietro di alcuni pixel, non si desidera campionare accidentalmente quel jitter e assumere che stanno andando nell'altro senso perché l'immagine complessiva non prestami a questa conclusione –
No, sto scrivendo un gioco che un'immagine sul modulo dovrebbe seguire la direzione del mouse – Ioannis