CORDIC algorithm

zhuanzi:http://www.cnblogs.com/touchblue/p/3535968.html html

如上圖 算法

如圖中,直角座標系中點(X0,Y0)逆時鐘旋轉角度θ,變換成座標(X1,Y1),那麼用X0,Y0,以及θ的三角函數,若是表示X1,Y1呢? 函數

請想象,若是座標也旋轉角度θ,那麼X1,Y1的座標依然是(X0,Y0)。接着往下看: 3d

看完以上這副圖,就該明白這個等式了: htm

x1= x0cos θ − y0sin θ
y1= x0sin θ + y0cos θ blog

再把這個式子化成正切函數。 get

Cordic 算法的思想是經過迭代的方法,不斷的旋轉特定的角度,使得累計旋轉的角度的和無限接近某一設定的角度, it

每次旋轉的角度的θ = arctan( 1/(2^n) ); 方法

具體迭代以下表:Z0 =30°,Y0=0,X0 = 0.6073 im

輸入30°,通過9次迭代後, Z0 = 0,Y0=0.5006, X0 = 0.8657

x '(i +1)= ( x 'i− y 'i(σi)2−i)
y '(i +1)= ( x 'i(σi)2−i+ y 'i)

(當 i = 0)
x '1= 0.607 − 0 ⋅ (+1 ) ⋅ 1 = 0.607

y '1= 0.607 ⋅ (+1 ) ⋅ 1 + 0 = 0.607

經過Cordic算法後,獲得y9=0.5006 (=sin(30°))

                                 x9=0.8657 (=cos(30°))

因此也能夠用cordic算法求出正切值的。

或者求反正切值:

計算公式:

相關文章
相關標籤/搜索