マウスの最後の位置と現在の位置に基づいてマウスの方向(左、右、上、下)を得ることは可能ですか?私は2つのベクトルの間の角度を計算するコードを書いていますが、それが正しいかどうかはわかりません。マウスの座標から枢機卿の方向を得る方法
誰かが正しい方向を指摘できますか?
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);
}
角度方法が間違っていると言っても過言ではありません。 2つのベクトルの間の角度差は、ポイントが移動した実際の方向(デカルト平面上)については何も教えてくれません。 –
マウスジッタに対応しようとしていますか? - たとえば、ユーザーが100ピクセル右に動いていて、途中で数ピリオドのジッターが発生した場合は、間違ってそのジッタをサンプリングして、それ以外の方向に進むことは想定したくありません。その結論に向いています –
いいえ、私はフォーム上の画像がマウスの指示に従うゲームを書いています – Ioannis