#!/usr/bin/python3
# ===================================================================
# convert galactic lat/lon to x,y,z coordinates
# view point is the sun/earth
# ===================================================================
# tests:
#
# ---input--- -----results-----
# -lat- -lon- --x-- --y-- --z--
# ----------- -----------------
# 0 0 0 0 1
# 0 90 1 0 0
# 0 180 0 0 -1
# 0 270 -1 0 0
#
# 90 0 0 1 0
# -90 0 0 -1 0
# 90 90 0 1 0
# -90 90 0 -1 0
#
# 0 45 0.71 0 0.71
# 45 45 0.50 0.71 0.50
#
# ===================================================================
import sys
from math import radians, sin, cos
import user_interface as ui
# -------------------------------------------------------------------
# ---- convert galactic lat/lon to x,y,z
# ---- glat - galactic latitude (float)
# ---- glon - galactic longitude (float)
# -------------------------------------------------------------------
def lat_lon_to_xyz(glat,glon):
# ---- convert to radians
rlat = radians(glat)
rlon = radians(glon)
# ---- convert to x,y,z
x = sin(rlon) * cos(rlat)
y = sin(rlat)
z = cos(rlon) * cos(rlat)
print()
print(f'lat: {round(glat,2)} deg')
print(f'lon: {round(glon,2)} deg')
print(f'x : {round(x,2)}')
print(f'y : {round(y,2)}')
print(f'z : {round(z,2)}')
ui.pause()
# -------------------------------------------------------------------
# ---- main
# -------------------------------------------------------------------
while(True):
ui.clear_screen()
print()
print('Convert galatic lat/lon to x,y,z')
print('view point is the sun/earth')
# ---- ask the user for the latitude
while(True):
print()
s = ui.get_user_input('Enter latitude (deg): ')
if not s:
sys.exit()
tr,lat = ui.is_float(s)
if tr:
break
print(f'Error, try again')
# ---- ask the user for the longitude
while(True):
print()
s = ui.get_user_input('Enter longitude (deg): ')
if not s:
sys.exit()
tr,lon = ui.is_float(s)
if tr:
break
print(f'Error, try again')
# ---- convert lat/lon to x,y,z
lat_lon_to_xyz(lat,lon)