#!/usr/bin/python3
# ===================================================================
# Test galactic longitude/latitude conversion to xyz
# ===================================================================
from math import radians, sin, cos
# -------------------------------------------------------------------
# ---- convert galactic lat/lon to xyz
# -------------------------------------------------------------------
def lat_lon_to_xyz(lat,lon):
rlat = radians(lat) # convert to radians
rlon = radians(lon) # convert to radians
x = sin(rlat) * cos(rlon)
y = sin(rlat)
z = cos(rlat) * cos(rlon)
return (x,y,z)
# -------------------------------------------------------------------
# ---- main
# -------------------------------------------------------------------
if __name__ == '__main__':
# ---------------------------------------------------------------
# ---- test support function
# ---------------------------------------------------------------
def scale_and_convert_to_pixels(glat,glon,scale):
x,y,z = lat_lon_to_xyz(glat,glon)
# ---- scale and convert to integer (pixels)
x = round(x * scale)
y = round(y * scale)
z = round(z * scale)
return(x,y,z)
# ---------------------------------------------------------------
# ---- test support function
# ---------------------------------------------------------------
def test_lat_lon_conversion(glat,glon,scale):
print('------------------------------------')
xyz = scale_and_convert_to_pixels(glat,glon,scale)
print(f'glat : {glat}')
print(f'glon : {glon}')
print(f'scale: {scale}')
print(f'xyz : {xyz}')
# ----------------------------------------------------------------
# ---- tests
# ----------------------------------------------------------------
print()
print('---- 0, 90,180,270,360 ------------------------')
print()
test_lat_lon_conversion(0.0, 0.0, 100.0)
test_lat_lon_conversion(0.0, 90.0, 100.0)
test_lat_lon_conversion(0.0, 180.0, 100.0)
test_lat_lon_conversion(0.0, 270.0, 100.0)
test_lat_lon_conversion(0.0, 360.0, 100.0)
print()
print('----- 0 45,135,215,250 ------------------------')
print()
test_lat_lon_conversion(0.0, 45.0, 100.0)
test_lat_lon_conversion(0.0, 135.0, 100.0)
test_lat_lon_conversion(0.0, 225.0, 100.0)
test_lat_lon_conversion(0.0, 315.0, 100.0)
print('---- 90, 90,180,270,360 -----------------------')
print()
test_lat_lon_conversion(90.0, 0.0, 100.0)
test_lat_lon_conversion(90.0, 90.0, 100.0)
test_lat_lon_conversion(90.0, 180.0, 100.0)
test_lat_lon_conversion(90.0, 270.0, 100.0)
test_lat_lon_conversion(90.0, 360.0, 100.0)
print()
print('----- -90 45,135,215,250 ----------------------')
print()
test_lat_lon_conversion(-90.0, 0.0, 100.0)
test_lat_lon_conversion(-90.0, 90.0, 100.0)
test_lat_lon_conversion(-90.0, 180.0, 100.0)
test_lat_lon_conversion(-90.0, 270.0, 100.0)
test_lat_lon_conversion(-90.0, 360.0, 100.0)
print()
print('----- 45 45,135,215,250 -----------------------')
print()
test_lat_lon_conversion(45.0, 45.0, 100.0)
test_lat_lon_conversion(45.0, 135.0, 100.0)
test_lat_lon_conversion(45.0, 225.0, 100.0)
test_lat_lon_conversion(45.0, 315.0, 100.0)
print()
print('----- -45 45,135,215,250 ----------------------')
print()
test_lat_lon_conversion(-45.0, 45.0, 100.0)
test_lat_lon_conversion(-45.0, 135.0, 100.0)
test_lat_lon_conversion(-45.0, 225.0, 100.0)
test_lat_lon_conversion(-45.0, 315.0, 100.0)