【发布时间】:2010-12-13 22:45:33
【问题描述】:
是否可以根据鼠标最后位置和当前位置获取鼠标方向(左、右、上、下)?我已经编写了代码来计算两个向量之间的角度,但我不确定它是否正确。
有人可以指点我正确的方向吗?
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 像素,但在中途前后抖动了几个像素,你不想意外地对抖动进行采样并假设它们朝相反方向移动,因为整体图片没有得出这个结论
-
不,我正在编写一个游戏,表单上的图像应该跟随鼠标的方向
标签: c# mouse position coordinates direction