107 lines
3.2 KiB
Python
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)
|