在给定起始位置,角度和距离的情况下,如何计算新的光标位置

时间:2019-05-09 20:14:42

标签: c#

我正在编写一个类来帮助鼠标移动,但似乎无法使带有距离和角度功能的移动正常工作,它似乎总是以45度角移动鼠标。

public static POINT moveDistanceAngle(POINT start, double distance, double angle)
{
    double radians = angleToRadians(angle);
    int x = (int)Math.Round(Math.Cos(radians) * distance);
    int y = (int)Math.Round(Math.Sin(radians) * distance);

    return new POINT(start.X + x, start.Y + y);
}

我正在使用GetCursorPos来说明问题。

public static double angleToRadians(double angle)
{
    return (Math.PI / 180) * angle;
}

我在数学上做错了吗?

2 个答案:

答案 0 :(得分:1)

此愚蠢帖子的道歉。花了几个小时后,我发现实际问题出在我的数学中来设置鼠标光标,而不是数学中。这篇文章实际上具有正确的数学。

答案 1 :(得分:0)

看起来 angle 用弧度而不是度来度量,并且您将弧度进行了两次转换::

public static POINT moveDistanceAngle(POINT start, double distance, double angleRad)
{
    int x = (int)Math.Round(Math.Cos(angleRad) * distance);
    int y = (int)Math.Round(Math.Sin(angleRad) * distance);

    return new POINT(start.X + x, start.Y + y);
}