Date: Tue, 25 Mar 1997 19:43:23 -0600 (CST) From: Andrew Deren Reply-To: Andrew Deren To: DBerry1 AT dca DOT gov DOT au cc: djgpp AT delorie DOT com Subject: Re: Newbie troubles with Sin and Cos In-Reply-To: <0000oqkoqioy.0000nzhphlnh@dca.gov.au> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII 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 > #include > #include > > 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 > >