Files
Masterprojekt/conversions_test.py
2026-01-18 22:29:29 +01:00

107 lines
3.2 KiB
Python

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)