求平方根的倒数,实际就是求方程1/(x^2)-a=0的解。将该方程按牛顿迭代法的公式展开为: x[n+1]=1/2*x[n]*(3-a*x[n]*x[n])将1/2放到括号里面,就得到了上面那个函数的倒数第二行。 接着,我们要设法估计第一个近似根。这也是上面的函数最神奇的地方。它通过某种方法算出了一个与真根非常接近的...
为此约翰·卡马克想到了一种极为高效的算法:他选择了一个16进制数字0x5f3759df,然后用牛顿法反复迭代,以求出更精确的近似值。这样做比传统算法快4倍,这就是平方根倒数速算法(Fast Inverse Square Root,Fast InvSqrt)。天才发明算法,普通人学都学不明白,或许这就是降维碾压吧。 这个算法的价值在于它显著地减少了...
卡马克一直秉持黑客自由开源的理念,开放了雷神之锤3的开源代码,在一个开平方sqrt的函数中,出现了0x5f3759df这个常数,后面备注了“what the fuck?”,当时大家都不理解为什么开平方会用到一个固定常数,但是用这个常数,就是能是开平方的计算速度快了4倍。 这个正式算法名称叫平方根倒数速算法,是90年代SGI所发明的,...
对于算法的优化,在《雷神之锤3》的源代码中同样能找到蛛丝马迹,其中有一个名为「卡马克反转」的算法(平方根倒数速算法),可用于快速计算x平方根的倒数。在计算机图形学领域中,求取照明和投影的波动角度与反射效果时经常要计算平方根倒数,而「卡马克反转」可以减少求平方根倒数时浮点运算操作带来的巨大运算耗费。
1216 4 9:15 App 牛顿迭代法求平方根_算法笔记 1.4万 -- 8:57 App 【IT老齐606】last_updated字段的作用 1.3万 103 3:45 App 2024年9月16日信息差|一觉醒来,世界发生了什么?浏览方式(推荐使用) 哔哩哔哩 你感兴趣的视频都在B站 打开信息网络传播视听节目许可证:0910417 网络文化经营许可证 沪网文【20...
约翰首次把这种奇特的运算法调用至引擎,这就是后来著名的“平方根倒数速算法”。0x5f3759df犹如黄金分割线,是一道优美的自然法则,约翰发现了它,就跟门捷列夫发现了元素周期表一样,具有里程碑的意义。(氢离子:有调查显示0x5f3759df并非约翰首创,之前就于计算机图形学的硬件与软件领域有所应用,在此不做细考。但《...
约翰首次把这种奇特的运算法调用至引擎,这就是后来著名的“平方根倒数速算法”。0x5f3759df犹如黄金分割...
真要是说John carmack原创的恐怕是工程上的hack和解决方案,比如大家熟悉的平方根倒数求法。其实...
约翰·卡马克John Carmek:编程天才!举个例子他在游戏里弄出了0x5f3759df “平方根倒数速算法”(Quake3的代码里有)。是代码的真正爱好者。在90-00年代对游戏图像和技术的发展和进步贡献太大了。FPS之父,Doom,Quake之父(另外一个是约翰·罗梅洛John Romero) ...
分享16赞 辽师计信吧 ZeroX丶军酱丿 【技术】《雷神之锤III》求平方根倒数(快速平方根(倒数)算法)Quake-III Arena (雷神之锤3)是90年代的经典游戏之一。 该系列的游戏不但画面和内容不错,而且即使计算机配置低,也能极其流畅地运行。这要归功于它3D 分享11 广东硅谷学院吧 硅谷学院sve 史上最伟大的20位程序...