當前位置:首頁 » 操作系統 » 卡馬克演算法

卡馬克演算法

發布時間: 2022-05-05 12:49:27

㈠ 求用C或C++語言計算平方根,要求不使用SQRT函數

一般我們求平方根使用牛頓迭代法,實現代碼如下:

doublenewtonMethod(doubletoBeSqrted){
doublex=1.0;
while(abs(x*x-toBeSqrted)>1e-5){
x=(x+toBeSqrted/x)/2;
}
returnx;
}

還可以用二分查找,這個原理較為簡單,不過演算法復雜度較高。

floatsqrtByBisection(floatn){
if(n<0)
returnn;
floatmid,last;
floatlow,up;
low=0,up=n;
mid=(low+up)/2;
do{
if(mid*mid>n)
up=mid;
else
low=mid;
last=mid;
mid=(up+low)/2;
}while(abs(mid-last)>eps);

returnmid;
}

㈡ J2me相關問題,卡馬克演算法

我這有一個,留下QQ,晚上發給你

㈢ android繪圖,怎麼才能做出拖動畫布效果

使用卡馬克地圖緩沖演算法。
基本原理是使用drawBitmap (Bitmap bitmap, Rect src, RectF dst, Paint paint)方法。
將點陣圖上指定的部分(src矩形部分)繪制到指定的屏幕位置(dst矩形部分),通過改變src矩形的位置改變實現地圖的移動。
給你個連接,自己先看看。
http://xys289187120.blog.51cto.com/3361352/656998

㈣ c#卡馬克演算法 mac 上可以用嗎

結構化演算法是由一些基本結構順序組成的。
在基本結構之間不存在向前或向後的跳轉,流程的轉移只存在於一個基本的結構范圍內。
一個非結構化的演算法可以用一個等價的結構化演算法代替,其功能不變。
跟結構化演算法比較起來,非結構化演算法有以下缺點。
流程不受限制的隨意轉來轉去,使流程圖豪無規律。
使人在閱讀的時候難以理解演算法的邏輯。
難以閱讀,也難以修改。
從而使演算法的可靠性和可維護性難以保證。

㈤ 手機程序開發中,對人物滾屏行走有沒有好點的演算法

一般是應用相對位移來實現人物行走同背景移動的一致 在演算法方面,建議看看卡馬克卷軸演算法,這個在實現上有一定難度,但是效果會很好

㈥ 代碼量能衡量一個程序員的編程水平嗎

能!

相同功能的前提下,代碼量越少水平越高,代碼耗時越少水平越高,很考驗程序員演算法功底以及對數字的敏感性。

比如網上流傳的當年Quake iii中算平方根的函數,一般算開方需要不斷迭代逼近,耗時較多,而卡馬克的不同之處在於,他選擇了一個神秘的猜測值 0×5f3759df作為起始,使得整個逼近過程收斂速度暴漲,對於Quake III所要求的精度10的負三次方,只需要一次迭代就能夠得到結果。雖然我看不懂,但是提高程序執行效率,降低迭代/遞歸/循環次數,提高代碼閱讀性,以榨油的態度對待開發是每個程序員的終身目標。

floatSquareRootFloat(floatnumber)
{
longi;
floatx,y;
constfloatf=1.5F;
x=number*0.5F;
y=number;
i=*(long*)&y;
i=0x5f3759df-(i>>1);
y=*(float*)&i;
y=y*(f-(x*y*y));
y=y*(f-(x*y*y));
returnnumber*y;
}

㈦ 《微微一笑很傾城》中肖奈大神說的平方根倒數速演算法是什麼鬼

平方根倒數速演算法

平方根倒數速演算法是適用於快速計算(積的平方根的倒數,在此需取符合IEEE 754標准格式的32位浮點數)的一種演算法。

平方根倒數速演算法(英語:Fast Inverse Square Root,亦常以「Fast InvSqrt()」或其使用的十六進制常數0x5f3759df代稱)是用於快速計算(積的平方根的倒數,在此需取符合IEEE 754標准格式的32位浮點數)的一種演算法。此演算法最早可能是於90年代前期由SGI所發明,後來則於1999年在《雷神之錘III競技場》的源代碼中應用,但直到2002-2003年間才在Usenet一類的公共論壇上出現。這一演算法的優勢在於減少了求平方根倒數時浮點運算操作帶來的巨大的運算耗費,而在計算機圖形學領域,若要求取照明和投影的波動角度與反射效果,就常需計算平方根倒數。

此演算法首先接收一個32位帶符浮點數,然後將之作為一個32位整數看待,以將其向右進行一次邏輯移位的方式將之取半,並用十六進制「魔術數字」0x5f3759df減之,如此即可得對輸入的浮點數的平方根倒數的首次近似值;而後重新將其作為浮點數,以牛頓法反復迭代,以求出更精確的近似值,直至求出符合精確度要求的近似值。在計算浮點數的平方根倒數的同一精度的近似值時,此演算法比直接使用浮點數除法要快四倍。

中文名

平方根倒數速演算法

外文名

Fast Inverse Square Root

定義

適用於快速計算的一種演算法

備注

最早被認為由約翰·卡馬克所發明

㈧ 這段驚世駭俗的代碼強在什麼地方,誰能看懂

0x5f3759df? 這是個什麼東西? 學過數值分析就知道,演算法裡面求平方根一般採用
的是無限逼近的方法,比如牛頓迭代法,抱歉當年我數值分析學的太爛,也講不清楚
。簡單來說比如求5的平方根,選一個猜測值比如2,那麼我們可以這么算

5/2 = 2.5; 2.5+2/2 = 2.25; 5/2.25 = xxx; 2.25+xxx/2 = xxxx ...
這樣反復迭代下去,結果必定收斂於sqrt(5),沒錯,一般的求平方根都是這么算的
。而卡馬克的不同之處在於,他選擇了一個神秘的猜測值0x5f3759df作為起始,使得
整個逼近過程收斂速度暴漲,對於Quake III所要求的精度10的負三次方,只需要一
次迭代就能夠得到結果。

好吧,如果這還不算牛b,接著看。

普渡大學的數學家Chris Lomont看了以後覺得有趣,決定要研究一下卡馬克弄出來的
這個猜測值有什麼奧秘。Lomont也是個牛人,在精心研究之後從理論上也推導出一個
最佳猜測值,和卡馬克的數字非常接近, 0x5f37642f。卡馬克真牛,他是外星人嗎?

傳奇並沒有在這里結束。Lomont計算出結果以後非常滿意,於是拿自己計算出的起始
值和卡馬克的神秘數字做比賽,看看誰的數字能夠更快更精確的求得平方根。結果是
卡馬克贏了... 誰也不知道卡馬克是怎麼找到這個數字的。

最後Lomont怒了,採用暴力方法一個數字一個數字試過來,終於找到一個比卡馬克數
字要好上那麼一丁點的數字,雖然實際上這兩個數字所產生的結果非常近似,這個暴
力得出的數字是0x5f375a86。

㈨ 什麼是卡馬克地圖緩沖演算法原理

結構化演算法是由一些基本結構順序組成的.在基本結構之間不存在向前或向後的跳轉,流程的轉移只存在於一個基本的結構范圍內.一個非結構化的演算法可以用一個等價的結構化演算法代替,其功能不變.
跟結構化演算法比較起來,非結構化演算法有以下缺點.
流程不受限制的隨意轉來轉去,使流程圖豪無規律.使人在閱讀的時候難以理解演算法的邏輯.難以閱讀,也難以修改.從而使演算法的可靠性和可維護性難以保證.

熱點內容
mysql上傳圖片php 發布:2024-10-07 04:13:31 瀏覽:852
手游喊話腳本 發布:2024-10-07 03:53:53 瀏覽:232
maven3編譯jdk6項目 發布:2024-10-07 03:19:57 瀏覽:45
緩存的視頻無法剪輯 發布:2024-10-07 03:19:40 瀏覽:89
解壓工具RAR 發布:2024-10-07 02:42:49 瀏覽:353
蘋果網盤解壓 發布:2024-10-07 02:42:49 瀏覽:160
為什麼安卓蘋果手游不互通 發布:2024-10-07 02:31:28 瀏覽:280
如何刪除手機中的游戲緩存 發布:2024-10-07 02:11:28 瀏覽:876
解鎖資料庫用戶 發布:2024-10-07 01:55:54 瀏覽:828
關系資料庫的關鍵字是指 發布:2024-10-07 01:55:54 瀏覽:518