0
点赞
收藏
分享

微信扫一扫

范数归一化,附代码

范数归一化

程序示例:以三维坐标为例

float get_square_norm(float x, float y, float z)
{
    return (x * x + y * y + z * z);
}

float inv_sqrt( float val ) 
{
	float half = 0.5f * val;
	long i = *(long*)&val;
	i = 0x5F3759DF - ( i >> 1 );
	val = *(float*)&i;
	val = val * ( ( 1.0f + 0.5f ) - half * val * val );

	return val;
}

void normalize(float* x, float* y, float* z) {

	float norm = inv_sqrt( get_square_norm( *x, *y, *z ) );
	*x *= norm;
	*y *= norm;
	*z *= norm;
	return;
}
举报

相关推荐

0 条评论