마우스의 마지막 위치와 현재 위치를 기준으로 마우스 방향 (왼쪽, 오른쪽, 위, 아래)을 얻을 수 있습니까? 두 벡터 사이의 각도를 계산하는 코드를 작성했지만 올바른지 확실하지 않습니다.마우스 좌표에서 기본 마우스 방향을 얻는 방법
나를 올바른 방향으로 안내해 줄 수 있습니까?
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);
}
저는 각도 방법이 정확하지 않다고 말하기까지했습니다. 두 벡터의 각도 차이는 점이 이동 한 실제 방향 (데카르트 평면에서)에 대해서는 알려주지 않습니다. –
마우스 지터를 수용하려고합니까? - 예를 들어 사용자가 100 픽셀을 오른쪽으로 일관되게 이동했지만 중간 픽셀이 몇 픽셀 정도 앞뒤로 움직이면 전체 사진이 그렇지 않기 때문에 실수로 그 지터를 샘플링하고 다른 방향으로 가고 싶지는 않습니다. 그 결론에 도움이된다 –
아니, 나는 형태의 이미지가 마우스의 방향을 따라야하는 게임을 writting하고있다 – Ioannis