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右三角形的保持:

只需使用毕达哥拉斯定理计算距离的平方,并与半径的平方进行比较:
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)