Hello, friends.
Can anybody help to create macros which will be able to calculate angles between two coordinates?
Thanks for your help
Hello, friends.
Can anybody help to create macros which will be able to calculate angles between two coordinates?
Thanks for your help
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
Remember: Tell us WHAT you want to do, not HOW you think you want to do it
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) / 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
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 [Code].... [/Code] 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
then in D2:
=ATAN2(A4-A3,B4-B3)*180/PI()
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 [Code].... [/Code] 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
According to what is written in the helpfiles (F1) you are.
Same result as snb's
=DEGREES(ATAN2(A4-A3,B4-B3))
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 radiansFrom 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.
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
Remember: Tell us WHAT you want to do, not HOW you think you want to do it
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) / 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
Trig was one of those subjects that I slept through at school
Remember To Do the Following....
Use [Code].... [/Code] 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