omega 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


enter image description here

Answer

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.

Comments