This might have been answered before, sorry if it has. I basically need to get the angle from origin to point. So lets say Origin is (0, 0) and my target point is (3, 0).
3 O'clock = 90 degrees
6 O'clock = 180 degrees
9 O'clock = 270 degrees
12 O'clock = 0 degrees
Somehow, I gotta do some math magic, and find out that the angle is 90 degrees (Top is 0). The origin can vary, so I need a method with two parameters, Origin, and TargetPoint, which returns double Angle in Degrees.
Yea, I realize this looks short and nonconstructive, but I made the question as simple and understandable as possible. All the other questions were closed -.-
Thanks
The vector between two points A and B is B-A = (B.x-A.x, B.y-A.y). The angle between two vectors can be calculated with the dot product or atan2.
See also Finding Signed Angle Between Vectors
Assuming
x
is positive, something like this:Edited to allow for negative
x
values:If it can be negative, just do it by case. Something like this:
Actually there is no way to find out the angle between point and origin due to the fact that the origin is (0,0). We can calculate the angle between 2 points beacuse they are treated like vectors and as such they have a direction, but the origin has no direction. For that reason, if you want to find the angle using the example of a clock you can calculate the angle between the point and (1,0) for example being that point at 0 degrees.
I'm sorry I'm not versed in C# but you can have a look at this java code which is similar:
If you try to calculate using (0,0) you will get NaN beacuse it tries to divide by zero.