|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
||||
|
||||
|
Trig functions and type conversion
I'm trying to use the CORDIC function to do some basic trig (calculating an angle given an x and y coordinate from a joystick), and I'm getting some odd results.
In short, if I calculate the angle using the atan() function, the results work when y>0, but give incorrect and discontinous results if y<0. Here's the simplest code that I came up with the recreates the problem: #include "cordic-math.h" // renamed so that I know it's not the Microchip one short long joyx,joyy; short long theta; joyx=(255-p1_x)-127; joyy=p1_y-127; theta=atan(joyy,joyx); printf("theta: %d ",(int)(theta>>16)); Anyone have some thoughts? I at first thought it was a problem with negative numbers and the >> operator, but theta/65536 gives the same numbers. |
|
#2
|
|||||
|
|||||
|
Re: Trig functions and type conversion
Quote:
|
|
#3
|
||||
|
||||
|
Re: Trig functions and type conversion
Quote:
|
|
#4
|
|||
|
|||
|
Re: Trig functions and type conversion
Did you write the library, or get it somewhere?
|
|
#5
|
|||
|
|||
|
Re: Trig functions and type conversion
why don't you use the math.h header. i'm pretty sure it has all the trig functions.
http://www.cplusplus.com/ref/cmath/ |
|
#6
|
||||
|
||||
|
Re: Trig functions and type conversion
Quote:
I was trying to use it instead of the standard math.h since it uses integer math instead of floating point, so it's much faster (and smaller). For now, I'm using the standard math.h, but if our team's code gets too complicated, I might revisit this. |
|
#7
|
|||
|
|||
|
Re: Trig functions and type conversion
OK, although my good friend Pat Fairbank posted the algorithm, I wrote it, and can assure you that there is a flaw in it (although I haven't had the time to look at it). Moreover, although theoretically the integer math should be faster, in empirical tests, the stock math library proved to be about 6 times faster than the CORDIC algorithm I wrote. Although at the moment I have no plans to rewrite the CORDIC algorithm, given enough public pressure, I might consider doing so. Sorry for the inconvenience.
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Auton + Functions | ten3brousone | Programming | 0 | 27-02-2005 20:11 |
| Overloaded functions | jgannon | Programming | 5 | 31-12-2004 11:04 |