点到点的距离:dist = sqrt(dx * dx + dy * dy); 但是 sqrt 太慢了,我不能接受。我找到了一种叫做 Taylor McLaughlin Series 的方法来估计书上两点的距离。但我无法理解以下代码。感谢任何帮助我的人。
#define MIN(a, b) ((a < b) ? a : b)
int FastDistance2D(int x, int y)
{
// This function computes the distance from 0,0 to x,y with 3.5% error
// First compute the absolute value of x, y
x = abs(x);
y = abs(y);
// Compute the minimum of x, y
int mn = MIN(x, y);
// Return the distance
return x + y - (mn >> 1) - (mn >> 2) + (mn >> 4);
}
我查阅了有关 McLaughlin Series 的相关数据,但我仍然无法理解返回值是如何使用 McLaughlin Series 来估算值的。谢谢大家~