import time import pickle import numpy as np from numpy import nan import winkelumrechnungen as wu import os from contextlib import contextmanager, redirect_stdout, redirect_stderr from itertools import product import pandas as pd from ellipsoide import EllipsoidTriaxial # ellips = "KarneyTest2024" # ellips = "BursaSima1980" ellips = "Fiction" ell: EllipsoidTriaxial = EllipsoidTriaxial.init_name(ellips) def deg_range(start, stop, step): return [float(x) for x in range(start, stop + step, step)] def asymptotic_range(start, direction="up", max_decimals=4): values = [] for d in range(0, max_decimals + 1): step = 10 ** -d if direction == "up": values.append(start + (1 - step)) else: values.append(start - (1 - step)) return values beta_5_85 = deg_range(5, 85, 5) lambda_5_85 = deg_range(5, 85, 5) beta_5_90 = deg_range(5, 90, 5) lambda_5_90 = deg_range(5, 90, 5) beta_0_90 = deg_range(0, 90, 5) lambda_0_90 = deg_range(0, 90, 5) beta_90 = [90.0] lambda_90 = [90.0] beta_0 = [0.0] lambda_0 = [0.0] beta_asym_89 = asymptotic_range(89.0, direction="up") lambda_asym_0 = asymptotic_range(1.0, direction="down") groups = { 1: list(product(beta_5_85, lambda_5_85)), # 2: list(product(beta_0, lambda_0_90)), # 3: list(product(beta_5_85, lambda_0)), # 4: list(product(beta_90, lambda_5_90)), # 5: list(product(beta_asym_89, lambda_asym_0)), # 6: list(product(beta_5_85, lambda_90)), 7: list(product(lambda_asym_0, lambda_0_90)), # 8: list(product(beta_0_90, lambda_asym_0)), # 9: list(product(beta_asym_89, lambda_0_90)), # 10: list(product(beta_0_90, beta_asym_89)), } for nr, points in groups.items(): points_cart = [] for point in points: beta, lamb = point cart = ell.ell2cart(wu.deg2rad(beta), wu.deg2rad(lamb)) points_cart.append(cart) groups[nr] = points_cart results = {} for nr, points in groups.items(): group_results = {"ell": [], "para": [], "geod": []} for point in points: elli = ell.cart2ell(point) cart_elli = ell.ell2cart(elli[0], elli[1]) group_results["ell"].append(np.linalg.norm(point - cart_elli, axis=-1)) para = ell.cart2para(point) cart_para = ell.para2cart(para[0], para[1]) group_results["para"].append(np.linalg.norm(point - cart_para, axis=-1)) geod = ell.cart2geod(point, "ligas3") cart_geod = ell.geod2cart(geod[0], geod[1], geod[2]) group_results["geod"].append(np.linalg.norm(point - cart_geod, axis=-1)) group_results["ell"] = np.array(group_results["ell"]) group_results["para"] = np.array(group_results["para"]) group_results["geod"] = np.array(group_results["geod"]) results[nr] = group_results with open(f"conversion_results_{ellips}.pkl", "wb") as f: pickle.dump(results, f) df = pd.DataFrame({ "Gruppe": [nr for nr in results.keys()], "max_Δr_ell": [f"{max(result["ell"]):.3g}" for result in results.values()], "max_Δr_para": [f"{max(result["para"]):.3g}" for result in results.values()], "max_Δr_geod": [f"{max(result["geod"]):.3g}" for result in results.values()] }) print(df)