Message-ID: <3338626C.5769@abc.se> Date: Wed, 26 Mar 1997 00:40:28 +0100 From: Kjell Franzen Reply-To: Kjell DOT Franzen AT abc DOT se MIME-Version: 1.0 To: DBerry1 AT dca DOT gov DOT au CC: djgpp AT delorie DOT com Subject: Re: Newbie troubles with Sin and Cos References: <0000oqkoqioy DOT 0000nzhphlnh AT dca DOT gov DOT au> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit 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 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...