From: no DOT spam DOT please AT thanks DOT com Newsgroups: comp.os.msdos.djgpp Subject: Re: Tank Movement Date: 7 Oct 1998 01:48:15 GMT Organization: Texas Instruments Lines: 29 Message-ID: <6veh8v$4cq$2@superb.csc.ti.com> References: <36147a32 DOT 10039817 AT ct-news DOT iafrica DOT com> <6vebp7$sap$1 AT fir DOT prod DOT itd DOT earthlink DOT net> <6vegc7$4cq$1 AT superb DOT csc DOT ti DOT com> NNTP-Posting-Host: lenny.dseg.ti.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: superb.csc.ti.com 907724895 4506 172.25.38.136 (7 Oct 1998 01:48:15 GMT) X-Complaints-To: abuse AT ti DOT com NNTP-Posting-Date: 7 Oct 1998 01:48:15 GMT X-Newsreader: knews 0.9.8 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com In article <6vegc7$4cq$1 AT superb DOT csc DOT ti DOT com>, no DOT spam DOT please AT thanks DOT com writes: > A much easier approach - use atan2(), which takes care of the quadrant > mapping for you, e.g., > > double dir_degrees(int x1, int y1, int y2, int x2) > { > int v1, v2; > double dir; > v1 = y1 - y2; > v2 = x1 - x2; > dir = 57 * atan( v1, v2 ); ^ Oops, I forgot the 2! Sorry. Try #define RAD2DEG 180.0/PI .... dir = RAD2DEG * atan2( v1, v2 ); Also, since atan2 (and atan) return a double, you might as well retain the precision in the rad-to-deg conversion. It doesn't cost you anything. > return dir; > } Oops, I forgot the 2!