Umrechnungs-Test, Tabellen
This commit is contained in:
106
conversions_test.py
Normal file
106
conversions_test.py
Normal file
@@ -0,0 +1,106 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user