| delorie.com/archives/browse.cgi | search |
| From: | Bertrand COCONNIER <bcoconni AT club-internet DOT fr> |
| Newsgroups: | comp.os.msdos.djgpp |
| Subject: | Re: math problem |
| Date: | Tue, 23 Feb 1999 23:59:59 +0100 |
| Organization: | Club-Internet (France) |
| Lines: | 33 |
| Message-ID: | <36D332EF.8841B673@club-internet.fr> |
| References: | <36d2d0aa DOT 0 AT news DOT sbbs DOT se> |
| NNTP-Posting-Host: | perigueux-2-55.club-internet.fr |
| Mime-Version: | 1.0 |
| X-Trace: | front4.grolier.fr 919810541 29844 195.36.138.55 (23 Feb 1999 22:55:41 GMT) |
| NNTP-Posting-Date: | 23 Feb 1999 22:55:41 GMT |
| X-Mailer: | Mozilla 4.5 [fr] (Win98; I) |
| X-Accept-Language: | fr |
| To: | djgpp AT delorie DOT com |
| DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
| Reply-To: | djgpp AT delorie DOT com |
Erik Johansson a écrit :
> if i have a line like this
> y
> | /
> | /
> | /
> | /
> | /
> |/_____________ x
>
> How can I calculate the angle of that line in degrees?
>
> Thanx in advance
You should first compute the slope of the line : slope= (y2-y1)/(x2-x1).
(x1,y1) and (x2,y2) are any plots on your line (they have to be
distinct). On your draw, the line seems to be drawn from the origin to a
point (x,y) so 'slope=y/x'. Then you compute atan(slope). Be careful :
1. The result is in radians
2. If the line is vertical the slope computation will fail but (of
course) the result is 90° or -90° depending on the sign of 'y'.
3. The result of atan() is in between -pi/2 and pi/2. If your angle
should have different values you must care about it. A simple test can
help you to determinate whether the angle is in or out the [-pi/2;pi/2]
interval.
if (x>0.)
angle=atan(slope); /* the angle is in between -pi/2 and pi/2*/
else
angle=atan(slope)+pi; /* the angle is in between pi/2 and 3pi/2*/
Bertrand.
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |