快速平方根算法.docVIP

  • 5
  • 0
  • 约5.79千字
  • 约 8页
  • 2017-08-20 发布于四川
  • 举报
快速平方根算法(1) 默认分类 2010-09-03 06:42:49 阅读16 评论0 ??字号:大中小?订阅 快速平方根算法 在3D图形编程中,经常要求平方根或平方根的倒数,例如:求向量的长度或将向量归一化。C数学函数库中的sqrt具有理想的精度,但对于3D游戏程式来说速度太慢。我们希望能够在保证足够的精度的同时,进一步提高速度。 Carmack在QUAKE3中使用了下面的算法,它第一次在公众场合出现的时候,几乎震住了所有的人。据说该算法其实并不是Carmack发明的,它真正的作者是Nvidia的Gary Tarolli(未经证实)。 // // 计算参数x的平方根的倒数 // float InvSqrt (float x) { float xhalf = 0.5f*x; int i = *(int*)x; i = 0x5f3759df - (i 1); // 计算第一个近似根 x = *(float*)i; x = x*(1.5f - xhalf*x*x); // 牛顿迭代法 return x; } 该算法的本质其实就是牛顿迭代法(Newton-Raphson Method,简称NR),而NR的基础则是泰勒级数(Taylor Series)。NR是一种求方程的近似根的方法。首先要估计一个与方程的根比较靠近的数值,然后根据公式推算下一个更加近似

文档评论(0)

1亿VIP精品文档

相关文档