icon-rss-large

uedbet客户端下载 | Login | SignUp

Subscribe to RSS | Email | 122 Subscribers

平方根倒腾数快算法

日期:2018-10-03作者:admin

  平方根倒腾数快算法(,亦日以“Fast InvSqrt()”或其运用的什六进制日数0x5f3759df代称)是用于快快计算(即的平方根的倒腾数,在此需取婚配IEEE 754规范程式的32位浮点数)的壹种算法。此算法最早能是于90年代初期由SGI所发皓,后头则于1999年在《雷神物之锤III竞技场》的源代码中运用,但直到2002-2003年间才在Usenet壹类的公共论坛上出产即兴。此雕刻壹算法的优势在于增添以了寻求平方根倒腾数时浮点运算操干带到来的庞父亲的运算消费,而在计算机图形学范畴,若要寻求取照皓和投影的摆荡角度与反照效实,就日需计算平方根倒腾数。

  此算法比值先接纳壹个32位带符浮点数,然后将之干为壹个32位整顿数对待,以将其向右终止壹次逻辑移位的方法将之取半,并用什六进制“幻术数字”0x5f3759df减之,如此即却得对输入的浮点数的平方根倒腾数的初次相近值;然后重行将其干为浮点数,以牛顿法重骈迭代,以寻求出产更正确的相近值,直到寻求出产婚配正确度要寻求的相近值。在计算浮点数的平方根倒腾数的相畅通稀度的相近值时,此算法比直接运用浮点数摒除法要快四倍。

  此算法最早被认为是由条约翰·卡马克所发皓,但后头的考查露示,该算法在此雕刻之前就于计算机图形学的坚硬件与绵软件范畴拥有所运用,如SGI和3dfx就曾在产品中运用此算法。而就当今所知,此算法最早由加以里·塔罗利(Gary Tarolli)在的开辟中运用。虽说遂后的相干切磋也提出产了壹些能的到来源,但于今为止仍不能确切知晓算法中所运用的特殊日数的到来源。

  浮点数的平方根倒腾数日用于计算正规募化向量。3D图形以次需寻求运用正规募化向量到来完成光照和投影效实,故此每秒邑需做上佰万次平方根倒腾数运算,而在处理背靠标注替换与光源的公用坚硬件设备出产即兴前,此雕刻些计算邑由绵软件完成,计算快度亦相当之缓;在1990年代此雕刻段代码开收回到来之时,微少半浮点数操干的快度更是远远滞后于整顿数操干,故此针对正规募化向量算法的优募化就露得尤为要紧。下面述计算正规募化向量的规律:

  要将壹个向量规范募化,就必须计算其欧几里得范数,以寻求得向量长度,为此便需对向量的各分量的平方和寻求平方根;而当寻求取到其长度,并以之摒除该向量的每个分量后,所得的新向量坚硬是与原向量同向的单位向量,若以公式体即兴:

  却寻求得向量v的欧几里得范数,此算法正类如对欧几里无暇间的两点寻求取其欧几里得距退,

  而寻求得的坚硬是规范募化的向量,若以代表,则拥有,

  却见规范募化向量时,对向量分量计算平方根倒腾数实为必须,因此,对平方根倒腾数计算算法的优募化对计算正规募化向量也父亲拥有裨更加。