确定两点是否接近

Elm*_*lmo 5 .net c# vb.net math

我有以下内容:

bool AreNear(Point Old, Point Current)
{
    int x1 = Convert.ToInt32(Old.X);
    int x2 = Convert.ToInt32(Current.X);
    int y1 = Convert.ToInt32(Old.Y);
    int y2 = Convert.ToInt32(Current.Y);
    if (x1 == x2) {
        if (y1 == y2) {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

如果当前点位于旧点的25像素半径内,我想在函数中返回true.谁能告诉我怎么做?

Hei*_*nzi 15

您可以使用毕达哥拉斯公式计算两点之间的距离.在C#中:

var d = Math.Sqrt(Math.Pow(x1 - x2, 2) + Math.Pow(y1 - y2, 2)) 
Run Code Online (Sandbox Code Playgroud)

为什么这样做?看看下图并记住a^2 + b^2 = c^2右三角形的保持:

毕达哥拉斯


Dan*_*her 5

只需使用毕达哥拉斯定理计算距离的平方,并与半径的平方进行比较:

bool ComparePoints(Point Old, Point Current)
{
    int x1 = Convert.ToInt32(Old.X);
    int x2 = Convert.ToInt32(Current.X);
    int y1 = Convert.ToInt32(Old.Y);
    int y2 = Convert.ToInt32(Current.Y);
    int dx = x1 - x2;
    int dy = y1 - y2;
    return (dx*dx + dy*dy) < 25*25;
}
Run Code Online (Sandbox Code Playgroud)