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算法求出正切值的。
或者求反正切值:
計算公式: