#!/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)