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
I know that when a vector has a point on the origin and you are given another point (x,y) that you can find the directional angle by evaluating for θ using the equation θ=arctan(yx).
Formula for angle between two Vectors The cosine of the angle between two vectors is equal to the sum of the product of the individual constituents of the two vectors, divided by the product of the magnitude of the two vectors. =| A | | B | cosθ.
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.
var vector2 = Target - Origin;
var vector1 = new Point(0, 1) // 12 o'clock == 0°, assuming that y goes from bottom to top
double angleInRadians = Math.Atan2(vector2.Y, vector2.X) - Math.Atan2(vector1.Y, vector1.X);
See also Finding Signed Angle Between Vectors
Assuming x
is positive, something like this:
angle = Math.Atan(y / x) * 180 / Math.PI + 90
Edited to allow for negative x
values:
If it can be negative, just do it by case. Something like this:
if (x < 0) {
angle = 270 - (Math.Atan(y / -x) * 180 / Math.PI);
} else {
angle = 90 + (Math.Atan(y / x) * 180 / Math.PI);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With