import math


def hfov_to_vfov(hFOV, aspect_ratio):
  return 2 * math.degrees(math.atan(math.tan(math.radians(hFOV / 2)) / aspect_ratio))

def hfov_to_dfov(hFOV, aspect_ratio):
  return 2 * math.degrees(math.atan(math.sqrt(1 + (1 / aspect_ratio)**2) * math.tan(math.radians(hFOV / 2))))

def vfov_to_hfov(vFOV, aspect_ratio):
  return 2 * math.degrees(math.atan(aspect_ratio * math.tan(math.radians(vFOV / 2))))

def vfov_to_dfov(vFOV, aspect_ratio):
  return 2 * math.degrees(math.atan(math.sqrt(1 + aspect_ratio**2) * math.tan(math.radians(vFOV / 2))))

def dfov_to_hfov(dFOV, aspect_ratio):
  return 2 * math.degrees(math.atan(math.tan(math.radians(dFOV / 2)) / math.sqrt(1 + (1 / aspect_ratio)**2)))

def dfov_to_vfov(dFOV, aspect_ratio):
  return 2 * math.degrees(math.atan(math.tan(math.radians(dFOV / 2)) / math.sqrt(1 + aspect_ratio**2)))

fov = 60
aspect_ratio = 2/1

print("h2v:", hfov_to_vfov(fov, aspect_ratio))
print("h2d:", hfov_to_dfov(fov, aspect_ratio))
print("v2h:", vfov_to_hfov(fov, aspect_ratio))
print("v2d:", vfov_to_dfov(fov, aspect_ratio))
print("d2h:", dfov_to_hfov(fov, aspect_ratio))
print("d2v:", dfov_to_vfov(fov, aspect_ratio))
