py:implement atan2 from atan

File : atan2.py (直接右键另存为下载)
Type : python
Brief : simple implementation of atan2 from atan


from math import atan
from math import atan2
from math import pi

# atan2 implementation from atan
# atan2(sin, cos)
def myatan2(dy, dx):
    if dx == 0:
        if dy > 0:
            return pi/2
        elif dy < 0:
            return -pi/2
    else:
        re = atan(dy / dx)
        if dx > 0:
            return re
        elif dx < 0 and dy >= 0:
            return re + pi
        elif dx < 0 and dy < 0:
            return re - pi


if __name__ == "__main__":
    dx = 3
    dy = -4
    print("atan  : {0:8f} rad".format(atan(dy/dx)))
    print("atan  : {0:8f} deg".format(atan(dy/dx)*180/pi))
    print("atan2 : {0:8f} rad".format(atan2(dy,dx)))
    print("atan2 : {0:8f} deg".format(atan2(dy,dx)*180/pi))
    print("mytan2: {0:8f} rad".format(myatan2(dy,dx)))
    print("mytan2: {0:8f} deg".format(myatan2(dy,dx)*180/pi))
  • atan2的范围为 [$-pi$,$pi$]
  • atan的范围为 [$cfrac{-pi}{2}$,$cfrac{pi}{2}$]

atan2


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [ [email protected] ]