Computer Science Canada Programming C, C++, Java, PHP, Ruby, Turing, VB   Username:   Password: Wiki   Blog   Search   Turing   Chat Room  Members
How to get the direction (in degrees) between two points?
Author Message
s_climax

Posted: Tue May 04, 2004 5:32 pm   Post subject: How to get the direction (in degrees) between two points?

ssia

Mazer

Posted: Tue May 04, 2004 6:09 pm   Post subject: Re: How to get the direction (in degrees) between two points

s_climax wrote:
ssia

What the hell?

Anyways...
you can use arctand to give you an angle in degrees by supplying it with a slope. Of course that's not enough (most likely); that will just give you something between -90 and 90. You'll need to figure out the actual angle by checking which quadrant the second point is in with relation to the first point.
s_climax

Posted: Tue May 04, 2004 6:18 pm   Post subject: (No subject)

ssia stand for "subject says it all"

Isn't there just some code I can use with sin/cos?
Mazer

Posted: Tue May 04, 2004 6:30 pm   Post subject: (No subject)

Why would you want that?
You wanted a way to get an angle between two points. Given that you have points A (x1, y1) and B (x2, y2) you can get the angle from A to B using arctand (a.k.a. "tan inverse").

 code: angle := arctand ((y2 - y1) / (x2 - x1))

Angle, in this case should be a float. This is also assuming that B is above and to the right of A on a cartesian plane. If it's to the left you'll get a negative angle. And of course make sure to check if the x values are equal so you don't get a division by zero error.
Cervantes

Posted: Tue May 04, 2004 7:29 pm   Post subject: (No subject)

 code: function find_angle (x1, y1, x2, y2 : real) : real     if x2 = x1 then         if y2 >= y1 then             result 90         elsif y2 < y1 then             result 270         end if     else         if x2 > x1 and y2 >= y1 then %QUAD 1             result (arctand ((y2 - y1) / (x2 - x1)))         elsif x2 > x1 and y2 < y1 then %QUAD 2             result 360 + (arctand ((y2 - y1) / (x2 - x1)))         elsif x2 < x1 and y2 < y1 then %QUAD 3             result 180 + (arctand ((y2 - y1) / (x2 - x1)))         elsif x2 < x1 and y2 >= y1 then %QUAD 4             result 180 + (arctand ((y2 - y1) / (x2 - x1)))         end if     end if end find_angle Mouse.ButtonChoose ("multibutton") var x1, y1, x2, y2 : real var mx, my, btn : int var firsthit := false loop     cls     mousewhere (mx, my, btn)     if btn = 1 and firsthit = false then         firsthit := true         x1 := mx         y1 := my     end if     if btn = 100 then         firsthit := false     end if     if firsthit = true then         x2 := mx         y2 := my         drawline (round (x1), round (y1), round (x2), round (y2), black)         locate (1, 1)         put find_angle (x1, y1, x2, y2)     end if     View.Update     delay (10) end loop

that's how.
s_climax

Posted: Tue May 04, 2004 8:24 pm   Post subject: (No subject)

If the line is horizontal and going to the right, shouldn't the angle be 360 or 0 not 270?
Cervantes

Posted: Thu May 06, 2004 4:48 pm   Post subject: (No subject)

no it shouldn't be.
and in this program and in normal cardinal directions, a horizontal line going to the right isn't 270, its 90.
Tony

Posted: Thu May 06, 2004 4:53 pm   Post subject: (No subject)

umm... no...

horizontal line that is directly to the right is 0
up is 90
left is 180
down is 270

do you know why? because cos(0) = 1
Tony's programming blog. DWITE - a programming contest.

s_climax

Posted: Thu May 06, 2004 5:16 pm   Post subject: (No subject)

Thanks for clarifying that tony. I was right.
Cervantes

Posted: Thu May 06, 2004 5:19 pm   Post subject: (No subject)

Cervantes wrote:
cardinal directions

anywho, a line going to the right still wasn't 270.
s_climax

Posted: Fri May 14, 2004 8:34 pm   Post subject: (No subject)

 code: xDistance := personX - chaserX yDistance := personY - chaserY angle := tan (yDistance / xDistance)
Tony

Posted: Fri May 14, 2004 9:45 pm   Post subject: (No subject)

no, lol... first of all if xDistance = 0 you get runtime error (div 0) and even if you don't, it's arctan, not tan... that returns the ratio based on the angle (in radians)
Tony's programming blog. DWITE - a programming contest.
guruguru

Posted: Fri May 14, 2004 11:14 pm   Post subject: (No subject)

My example was simply that, and example. Clearly there are errors that can occur (dividing by zero), but they can be tested for and then dealt with.

Sorry, I thought that Turing did it in degrees... my bad. Anyways, to convert to degrees, simple multiply the answer by 180/Pi.

As well, I realize that it works for only one quadrant. Again, this was an EXAMPLE, so you can easily modify it!!!
 Display posts from previous: All Posts1 Day7 Days2 Weeks1 Month3 Months6 Months1 Year Oldest FirstNewest First

Page 1 of 1  [ 13 Posts ]
 Jump to:  Select a forum  CompSci.ca ------------ - Network News - General Discussion     General Forums   -----------------   - Hello World   - Featured Poll   - Contests     Contest Forums   -----------------   - DWITE   - [FP] Contest 2006/2008   - [FP] 2005/2006 Archive   - [FP] 2004/2005 Archive   - Off Topic     Lounges   ---------   - User Lounge   - VIP Lounge     Programming -------------- - General Programming     General Programming Forums   --------------------------------   - Functional Programming   - Logical Programming   - C     C   --   - C Help   - C Tutorials   - C Submissions   - C++     C++   ----   - C++ Help   - C++ Tutorials   - C++ Submissions   - Java     Java   -----   - Java Help   - Java Tutorials   - Java Submissions   - Ruby     Ruby   -----   - Ruby Help   - Ruby Tutorials   - Ruby Submissions   - Turing     Turing   --------   - Turing Help   - Turing Tutorials   - Turing Submissions   - PHP     PHP   ----   - PHP Help   - PHP Tutorials   - PHP Submissions   - Python     Python   --------   - Python Help   - Python Tutorials   - Python Submissions   - Visual Basic and Other Basics     VB   ---   - Visual Basic Help   - Visual Basic Tutorials   - Visual Basic Submissions     Education ----------- - Student Life   Graphics and Design ----------------------- - Web Design     Web Design Forums   ---------------------   - (X)HTML Help   - (X)HTML Tutorials   - Flash MX Help   - Flash MX Tutorials   - Graphics     Graphics Forums   ------------------   - Photoshop Tutorials   - The Showroom   - 2D Graphics   - 3D Graphics     Teams ------ - dTeam Public

 Style: Appalachia blueSilver eMJay subAppalachia subBlue subCanvas subEmjay subGrey subSilver subVereor Search: