omega - 4 months ago 16
Python Question

# How to get angle of point from center point?

If I have 2 points (x0,y0) which is the center of the circle, and another point (x,y) (this is the red dot on the circle boundary in the image). How can I get the angle of the dot?

Note, it should return an angle in degrees, from [0,360). The red dot angle in the image is approximately 70 degrees.

How can I do this in python?

Thanks

This doesn't seem to work.

(dx, dy) = (x0-x, y-y0)
angle = atan(float(dy)/float(dx))
if angle < 0:
angle += 180

You were very close :-)

Change this:

angle = atan(float(dy)/float(dx))

To this:

angle = degrees(atan2(float(dy), float(dx)))

The atan2() function is between than atan() because it considers the signs to the inputs and goes all the way around the circle:

atan2(...)
atan2(y, x)

Return the arc tangent (measured in radians) of y/x.
Unlike atan(y/x), the signs of both x and y are considered

The degrees() function converts from radians to degrees:

degrees(...)
degrees(x)

Convert angle x from radians to degrees.

Also, as Rich and Cody pointed-out you need to fix your dy calculation.

Source (Stackoverflow)