首页 > 其他 > 详细

Cordic算法

时间:2014-01-29 14:18:15      阅读:627      评论:0      收藏:0      [点我收藏+]

初次接粗坐标旋转算法,感觉有些茫然。

如果你和我一样,请一步步听我讲解。

如上图bubuko.com,布布扣

如图中,直角坐标系中点(X0,Y0)逆时钟旋转角度θ,变换成坐标(X1,Y1),那么用X0,Y0,以及θ的三角函数,如果表示X1,Y1呢?

bubuko.com,布布扣

请想象,如果坐标也旋转角度θ,那么X1,Y1的坐标依然是(X0,Y0)。接着往下看:

bubuko.com,布布扣

看完以上这副图,就该明白这个等式了:

x1= x0cos θ ? y0sin θ
y1= x0sin θ + y0cos θ

再把这个式子化成正切函数。

Cordic 算法的思想是通过迭代的方法,不断的旋转特定的角度,使得累计旋转的角度的和无限接近某一设定的角度,

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

bubuko.com,布布扣

具体迭代如下表:Z0 =30°,Y0=0,X0 = 0.6073

输入30°,经过9次迭代后, Z0 = 0,Y0=0.5006, X0 = 0.8657

bubuko.com,布布扣

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算法求出正切值的。

 

或者求反正切值:

bubuko.com,布布扣

计算公式:

bubuko.com,布布扣

Cordic算法

原文:http://www.cnblogs.com/touchblue/p/3535968.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!