delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/10/04/22:46:27

From: "JEFF" <jeff AT spam DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Tank Movement
Date: Sun, 4 Oct 1998 23:07:35 -0400
Organization: EarthLink Network, Inc.
Lines: 49
Message-ID: <6v9bfd$i05$1@ash.prod.itd.earthlink.net>
References: <36147a32 DOT 10039817 AT ct-news DOT iafrica DOT com>
NNTP-Posting-Host: sdn-ar-002ohdaytp184.dialsprint.net
X-Newsreader: Microsoft Outlook Express 4.72.3110.5
X-Posted-Path-Was: not-for-mail
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
X-ELN-Date: Sun Oct 4 19:38:37 1998
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Chris Brooker wrote in message <36147a32 DOT 10039817 AT ct-news DOT iafrica DOT com>...
>Hi,
>Sorry if my code sucks, I a mquite new to C.
>I am busy writing a Real Time Strategy with DJGPP and allegro and have
>hit a problem, here it is:
>
>I have a selected tank and would like to move it somewhere else by
>clicking there, i do this and it either: moves there properly, moves
>in the opposite direction or just sits and vibrates.
>Can someone please tell me what is wrong.
>
>Here are the functions:
>
>double dir_degrees(int x1, int y1, int y2, int x2)
>{
> int v1, v2;
> double dir;
> v1 = y1 - y2;
> v2 = x1 - x2;
> if (v2 == 0)
> v2++; //Stops division by zero errors
> dir = 57 * atan(v1 / v2);
> return dir;
>}


The atan function can only return values between -90 and 90 degrees, which
is two out of four quandrants. You need to check the signs of v1 and v2 to
determine if the angle is between -180 and -90 or  between 90 and 180
degrees and add or subtract 90 degrees accordingly.

If x and y coordinates are standard cartesian, with "right" as positive x
and "up" as positive y:

if x>0 and y>0, the angle must be 0 to 90 degrees.  No adjustment.
if x>0 and y<0, angle is -90 to 0.  No adjustment.
if x<0 and y>0 angle is  90 to 180. Add 180 degrees to return value.
if x<0 and y<0 angle is -180 to -90.  Subtract 180 degrees from return
value.

You may need to experiment to get the right adjustment as I have not tested
it.  Good luck.

-Jeff




- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019