最先开始探究的并不是坐标旋转,而是旋转坐标系,现在想想也是很有意思的东西。咳咳,似乎扯远了。不过很奇怪的是当时并不知道什么CORDIC算法,核心思想居然已经如此接近。3.坐标旋转表达式由(x1,y1)进行圆周旋转θ度到(x2,y2),式子很简单,不做赘述。
提出cos公因子:下面得到伪坐标旋转表达式:伪坐标旋转表达式的意义何在?伪旋转后的向量与旋转后的向量共线,去除cos因子,少一次乘法。4.二分查找从一个例子说起:计算atan2θ的值即是所求。如何用二分查找来求呢?换句话说,二分查找在这里找的是什么呢?找的就是让A点不断的进行逆时针旋转,旋转后纵坐标最接近0的A'点。先旋转45°看看,(x1,y1)设为(1000,2000)利用伪坐标旋转表达式计算出y2的值。y2=2000-1000=1000>0;x2=1000+2000=3000继续旋转22.5°y3=1000-3000*tan22.5=-242.64<0;旋转过了,这时一共转了67.5°了,也就是说实际的θ值要比67.5°小,那就再顺时针转11.25°求出y4y4=-242.64+3414.21*tan11.25=436.49>0;此时已逆时针旋转56.25°。再逆时针旋转5.625°,依次下去。直至旋转第n次时yn的值在误差范围内,每次旋转角度进行累加,估算出θ的值。通过二分查找,我们很明显的发现,这实际上是一个迭代过程。拿上一次伪旋转后的坐标计算本次伪旋转后的坐标,并且这个过程还要进行角度的累加。将这个过程用数学语言表现:角度累加器,di等于-1或1,表示逆时针旋转或顺时针旋转。很多同学会产生疑问,这里的tan22.5怎么算啊?不还是有很多的乘法运算吗?下面我们介绍的就是CORDIC算法的精髓,如何消去乘法运算。5.消去乘法运算我们采用二分查找法时每次旋转的角度是前一次的1/2,在这里对旋转角度我们稍稍动一点儿手脚。令θi为第i次旋转的角度。联系客服