Koordinatenumrechnungen funktionieren inkl. Randfälle, GHA2_num funktioniert mit Standard Ellipsoid

This commit is contained in:
2025-11-26 11:05:18 +01:00
parent 9031a12312
commit d76859d17b
5 changed files with 181 additions and 125 deletions

View File

@@ -54,8 +54,8 @@ def num_update(ell: EllipsoidTriaxial, points, diffs):
def gha2(ell: EllipsoidTriaxial, p1: np.ndarray, p2: np.ndarray, maxI: int):
beta1, lamb1 = ell.cart2ell2(p1)
beta2, lamb2 = ell.cart2ell2(p2)
beta1, lamb1 = ell.cart2ell(p1)
beta2, lamb2 = ell.cart2ell(p2)
points = points_approx_gha2(ell.ax, beta1, lamb1, beta2, lamb2, 5)
for j in range(maxI):
@@ -82,7 +82,7 @@ def gha2(ell: EllipsoidTriaxial, p1: np.ndarray, p2: np.ndarray, maxI: int):
def show_points(ell: EllipsoidTriaxial, points):
points_cart = []
for point in points:
points_cart.append(ell.ell2cart2(point[0], point[1]))
points_cart.append(ell.ell2cart(point[0], point[1]))
points_cart = np.array(points_cart)
fig = plt.figure()

View File

@@ -152,16 +152,16 @@ if __name__ == "__main__":
lamb1 = wu.deg2rad(0)
beta2 = wu.deg2rad(60)
lamb2 = wu.deg2rad(175)
P1 = ell.ell2cart2(wu.deg2rad(60), wu.deg2rad(0))
P2 = ell.ell2cart2(wu.deg2rad(60), wu.deg2rad(175))
P1 = ell.ell2cart(wu.deg2rad(60), wu.deg2rad(0))
P2 = ell.ell2cart(wu.deg2rad(60), wu.deg2rad(175))
para1 = ell.cart2para(P1)
para2 = ell.cart2para(P2)
cart1 = ell.para2cart(para1[0], para1[1])
cart2 = ell.para2cart(para2[0], para2[1])
ell11 = ell.cart2ell2(P1)
ell21 = ell.cart2ell2(P2)
ell1 = ell.cart2ell2(cart1)
ell2 = ell.cart2ell2(cart2)
ell11 = ell.cart2ell(P1)
ell21 = ell.cart2ell(P2)
ell1 = ell.cart2ell(cart1)
ell2 = ell.cart2ell(cart2)
c = 0.06207487624
alpha0 = wu.gms2rad([2, 52, 26.2393])

View File

@@ -1,68 +1,9 @@
import numpy as np
#from ellipsoide import EllipsoidTriaxial
from ellipsoide import EllipsoidTriaxial
import Numerische_Integration.num_int_runge_kutta as rk
import ausgaben as aus
# Panou 2013
class EllipsoidTriaxial:
def __init__(self, ax: float, ay: float, b: float):
self.ax = ax
self.ay = ay
self.b = b
self.ex = np.sqrt((self.ax**2 - self.b**2) / self.ax**2)
self.ey = np.sqrt((self.ay**2 - self.b**2) / self.ay**2)
self.ee = np.sqrt((self.ax**2 - self.ay**2) / self.ax**2)
self.ex_ = np.sqrt((self.ax**2 - self.b**2) / self.b**2)
self.ey_ = np.sqrt((self.ay**2 - self.b**2) / self.b**2)
self.ee_ = np.sqrt((self.ax**2 - self.ay**2) / self.ay**2)
self.Ex = np.sqrt(self.ax**2 - self.b**2)
self.Ey = np.sqrt(self.ay**2 - self.b**2)
self.Ee = np.sqrt(self.ax**2 - self.ay**2)
@classmethod
def init_name(cls, name: str):
if name == "BursaFialova1993":
ax = 6378171.36
ay = 6378101.61
b = 6356751.84
return cls(ax, ay, b)
elif name == "BursaSima1980":
ax = 6378172
ay = 6378102.7
b = 6356752.6
return cls(ax, ay, b)
elif name == "BursaSima1980round":
# Panou 2013
ax = 6378172
ay = 6378103
b = 6356753
return cls(ax, ay, b)
elif name == "Eitschberger1978":
ax = 6378173.435
ay = 6378103.9
b = 6356754.4
return cls(ax, ay, b)
elif name == "Bursa1972":
ax = 6378173
ay = 6378104
b = 6356754
return cls(ax, ay, b)
elif name == "Bursa1970":
ax = 6378173
ay = 6378105
b = 6356754
return cls(ax, ay, b)
elif name == "Bessel-biaxial":
ax = 6377397.15509
ay = 6377397.15508
b = 6356078.96290
return cls(ax, ay, b)
def gha2_num(ell: EllipsoidTriaxial, beta_1, lamb_1, beta_2, lamb_2, n=16000, epsilon=10**-12, iter_max=30):
"""
@@ -383,8 +324,8 @@ if __name__ == "__main__":
beta2 = np.deg2rad(75)
lamb2 = np.deg2rad(66)
a1, a2, s = gha2_num(ell, beta1, lamb1, beta2, lamb2)
print(np.rad2deg(a1))
print(np.rad2deg(a2))
print(aus.gms("a1", a1, 4))
print(aus.gms("a2", a2, 4))
print(s)