vx, vy = CORDIC(vx, vy, coordinate\_mode, beta)
- int i = 0;
- int iterations = 0; // Number of times to run the algorithm
- float arctanTable[iterations]; // in Radians
- float K = 0.6073; // K
- float v_x,v_y; // Vector v; x and y components
-
- for(i=0; i < iterations; i++) {
- arctanTable[i] = atan(pow(2,-i));
- }
-
- float vnew_x; // To store the new value of x;
- for(i = 0; i < iterations; i++) {
- // If beta is negative, we need to do a counter-clockwise rotation:
- if( beta < 0) {
- vnew_x = v_x + (v_y*pow(2,-i));
- v_y -= (v_x*pow(2,-i));
- beta += arctanTable[i];
- }
- // If beta is positive, we need to do a clockwise rotation:
- else {
- vnew_x = v_x - (v_y*pow(2,-i));
- v_y += (v_x*pow(2,-i));
- beta -= arctanTable[i];
- }
- v_x = vnew_x;
- }
- v_x *= K;
- v_y *= K;
Links: