|
|
今天在《Windows游戏编程大师技巧》中看到了一段求两点间距离的代码。代码中用了一个数学技巧,就是用麦克劳林级数简化了计算两点间距离时的开方运算。但是我怎么也看不明白代码到底如何运用了麦克劳林级数。特在此请教大家,谢谢!代码如下:
//求a,b的最值
#define MIN( a, b ) ( ( a < b ) ? a : b )
#define MAX( a, b ) ( ( a > b ) ? a : b )
//将a,b的值交换
#define SWAP( a, b, t ) ( t = a; a = b; b = t; )
//求a的绝对值
#define ABS( a ) ( ( a > 0 ) ? a : ( -a ) )
//-------------------------------------------------------
// Name: Fast_Distance_2D()
// Desc: 计算2D平面任意点到原点的距离
//-------------------------------------------------------
int Fast_Distance_2D( int x, int y )
{
//求绝对值
x = ABS( x );
y = ABS( y );
//求x,y中最小那个
int mn = MIN( x, y );
//计算并返回点( x, y )到原点的距离
return( x + y - ( mn >> 1 ) - ( mn >> 2 ) + ( mn >> 4 ) );
}
|
|