Mail Archives: djgpp/1997/03/25/19:04:06
DBerry1 AT dca DOT gov DOT au wrote:
>
> G'day
>
> I've just started playing around with DJGPP and have come across the
> following problem.
>
> I'm trying to write a routine that spins a pixel around in a circle. That
> works ok so far, except that the X and Y points are never next to each
> other - I think I have narrowed it down to the results I am getting from
> using COS and SIN.
>
> for instance here's the output from a simple prog I did to test my idea
>
> Sin of 0 is 0.000000
> Sin of 1 is 0.841471
> Sin of 2 is 0.909297
> Sin of 3 is 0.141120
> Sin of 4 is -0.756802
>
> But using a calculator I get
>
> Sin of 0 is 0
> Sin of 1 is 0.017452
> Sin of 2 is 0.034899
> Sin of 3 is 0.052335
> Sin of 4 is 0.069756
>
> Here's the simple prog...
>
> #include <math.h>
> #include <stdlib.h>
> #include <stdio.h>
>
> float result = 0.0;
> int theta = 0;
>
> main ()
> {
> while (theta < 360)
> {
> result = sin(theta);
> printf ("Sin of %i is %f\n",theta,result);
> theta++;
> }
> return 0;
> }
>
> Am I using the wrong variable types to hold the results ? Do I need to do
> something special in DJGPP to get the magic numbers ?
>
> Thanks
> dberry AT dca DOT gov DOT au
It works fine. The result You get is not what You expected because DJGPP
(and probably all other compilers) takes radians instead of degrees. A
whole 360 degrees is, in radians, 2 pi. So what you need to do is
multiply your degrees with pi/180. That should get you the result you
expected...
- Raw text -