Consulting

Results 1 to 9 of 9

Thread: Angle between two coordinates

  1. #1
    VBAX Newbie
    Joined
    Aug 2015
    Posts
    1
    Location

    Angle between two coordinates

    Hello, friends.
    Can anybody help to create macros which will be able to calculate angles between two coordinates?
    Thanks for your help
    Attached Images Attached Images
    Attached Files Attached Files

  2. #2
    VBAX Wizard
    Joined
    Apr 2007
    Posts
    7,008
    Location
    Should be simple arc tan function


    Option Explicit
    Function AngleBetween(x1 As Double, y1 As Double, x2 As Double, y2 As Double) As Double
        Dim x As Double
        With Application.WorksheetFunction
            'radians
            x = .Atan2((y2 - y1), (x2 - x1))
            x = x * 180# / .Pi
        End With
        AngleBetween = x
    End Function
    Paul

    ------------------------------------------------------------------------------------------------------------------------
    1. Use [CODE] ....[/CODE ] Tags for readability
    [CODE]PasteYourCodeHere[/CODE ] -- (or paste your code, select it, click [#] button)
    2. Upload an example
    Go Advanced / Attachments - Manage Attachments / Add Files / Select Files / Select the file(s)
    (multiple files can be selected while holding Ctrl key) / Upload Files / Done
    3. Mark the thread as [Solved] when you have an answer
    Thread Tools (on the top right corner, above the first message)
    4. Read the Forum FAQ, especially the part about cross-posting in other forums
    http://www.vbaexpress.com/forum/faq...._new_faq_item3

  3. #3
    Moderator VBAX Guru Aussiebear's Avatar
    Joined
    Dec 2005
    Location
    Queensland
    Posts
    3,837
    Location
    Hmmmm..... For those of us who have been sitting out in the sun for too long, just what does that do Paul?
    Remember To Do the Following....
    Use tags when posting code to the thread,
    Mark your thread as Solved if satisfied by using the Thread Tools options.
    If posting the same issue to another forum please show the link

  4. #4
    Knowledge Base Approver VBAX Guru
    Joined
    Apr 2012
    Posts
    4,776
    then in D2:

    =ATAN2(A4-A3,B4-B3)*180/PI()

  5. #5
    Moderator VBAX Guru Aussiebear's Avatar
    Joined
    Dec 2005
    Location
    Queensland
    Posts
    3,837
    Location
    From looking at the ATan2 function, I understand that this finds the angle in radians, and I assume that "*180/Pi" converts this to degrees. Am I correct?
    Remember To Do the Following....
    Use tags when posting code to the thread,
    Mark your thread as Solved if satisfied by using the Thread Tools options.
    If posting the same issue to another forum please show the link

  6. #6
    Knowledge Base Approver VBAX Guru
    Joined
    Apr 2012
    Posts
    4,776
    According to what is written in the helpfiles (F1) you are.

  7. #7
    VBAX Expert
    Joined
    Apr 2005
    Posts
    778
    Location
    Same result as snb's


    =DEGREES(ATAN2(A4-A3,B4-B3))

  8. #8
    VBAX Wizard
    Joined
    Apr 2007
    Posts
    7,008
    Location
    Quote Originally Posted by Aussiebear View Post
    Hmmmm..... For those of us who have been sitting out in the sun for too long, just what does that do Paul?

    From online help

    ATAN2 function
    Returns the arctangent, or inverse tangent, of the specified x- and y-coordinates.
    The arctangent is the angle from the x-axis to a line containing the origin (0, 0) and a point with coordinates (x_num, y_num). The angle is given in radians between -pi and pi, excluding -pi.
    Syntax
    ATAN2(x_num,y_num)
    X_num is the x-coordinate of the point.
    Y_num is the y-coordinate of the point.
    Remarks
    A positive result represents a counterclockwise angle from the x-axis; a negative result represents a clockwise angle.
    ATAN2(a,b) equals ATAN(b/a), except that a can equal 0 in ATAN2.
    If both x_num and y_num are 0, ATAN2 returns the #DIV/0! error value.
    To express the arctangent in degrees, multiply the result by 180/PI( ) or use the DEGREES function.
    Translates P1 to the origin (0,0) and then uses the arctan of the Opposite (y2-y1) and the Adjacent (x2-x1) sides to determine the angle in radians

    The 180/Pi is to get to degrees

    Many ways to do it, but I try to match an answer to the perceived complexity of the question and this was a very basic trig question
    Paul

    ------------------------------------------------------------------------------------------------------------------------
    1. Use [CODE] ....[/CODE ] Tags for readability
    [CODE]PasteYourCodeHere[/CODE ] -- (or paste your code, select it, click [#] button)
    2. Upload an example
    Go Advanced / Attachments - Manage Attachments / Add Files / Select Files / Select the file(s)
    (multiple files can be selected while holding Ctrl key) / Upload Files / Done
    3. Mark the thread as [Solved] when you have an answer
    Thread Tools (on the top right corner, above the first message)
    4. Read the Forum FAQ, especially the part about cross-posting in other forums
    http://www.vbaexpress.com/forum/faq...._new_faq_item3

  9. #9
    Moderator VBAX Guru Aussiebear's Avatar
    Joined
    Dec 2005
    Location
    Queensland
    Posts
    3,837
    Location
    Trig was one of those subjects that I slept through at school
    Remember To Do the Following....
    Use tags when posting code to the thread,
    Mark your thread as Solved if satisfied by using the Thread Tools options.
    If posting the same issue to another forum please show the link

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •