Mail Archives: djgpp/1997/03/25/20:55:13
Your problem is that math sin and cosine function use radians not degrees.
To convert from degrees to radians use
radians = (pi * degrees) / 180.0;
where pi 3.14 or you can use math #define PI to get it more accurate
Than your main function would be:
> main ()
> {
> while (theta < 360)
> {
> result = sin((PI * theta) / 180.0);
> printf ("Sin of %i is %f\n",theta,result);
> theta++;
> }
> return 0;
> }
The other way to do it would be to say
while (theta < 2 * PI){
..
theta += 0.0174532925; // (2*PI)/360
}
I hope that helps
On 26 Mar 1997 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
>
>
- Raw text -