Code-Verschönerung Dashboard

This commit is contained in:
2025-12-15 12:33:12 +01:00
parent 4139fbc354
commit bf1e26c98a
3 changed files with 195 additions and 127 deletions

View File

@@ -202,32 +202,41 @@ class EllipsoidTriaxial:
return np.array([x, y, z])
def ell2cart(self, beta: float, lamb: float) -> np.ndarray:
def ell2cart(self, beta: float | np.ndarray, lamb: float | np.ndarray) -> np.ndarray:
"""
Panou, Korakitis 2019 2
:param beta: elliptische Breite [rad]
:param lamb: elliptische Länge [rad]
:return: Punkt in kartesischen Koordinaten
"""
if beta == -np.pi/2:
return np.array([0, 0, -self.b])
elif beta == np.pi/2:
return np.array([0, 0, self.b])
elif beta == 0 and lamb == -np.pi/2:
return np.array([0, -self.ay, 0])
elif beta == 0 and lamb == np.pi/2:
return np.array([0, self.ay, 0])
elif beta == 0 and lamb == 0:
return np.array([self.ax, 0, 0])
elif beta == 0 and lamb == np.pi:
return np.array([-self.ax, 0, 0])
else:
B = self.Ex**2 * np.cos(beta)**2 + self.Ee**2 * np.sin(beta)**2
L = self.Ex**2 - self.Ee**2 * np.cos(lamb)**2
x = self.ax / self.Ex * np.sqrt(B) * np.cos(lamb)
y = self.ay * np.cos(beta) * np.sin(lamb)
z = self.b / self.Ex * np.sin(beta) * np.sqrt(L)
return np.array([x, y, z])
beta = np.asarray(beta, dtype=float)
lamb = np.asarray(lamb, dtype=float)
beta, lamb = np.broadcast_arrays(beta, lamb)
B = self.Ex ** 2 * np.cos(beta) ** 2 + self.Ee ** 2 * np.sin(beta) ** 2
L = self.Ex ** 2 - self.Ee ** 2 * np.cos(lamb) ** 2
x = self.ax / self.Ex * np.sqrt(B) * np.cos(lamb)
y = self.ay * np.cos(beta) * np.sin(lamb)
z = self.b / self.Ex * np.sin(beta) * np.sqrt(L)
xyz = np.stack((x, y, z), axis=-1)
# Pole
mask_south = beta == -np.pi / 2
mask_north = beta == np.pi / 2
xyz[mask_south] = np.array([0, 0, -self.b])
xyz[mask_north] = np.array([0, 0, self.b])
# Äquator
mask_eq = beta == 0
xyz[mask_eq & (lamb == -np.pi / 2)] = np.array([0, -self.ay, 0])
xyz[mask_eq & (lamb == np.pi / 2)] = np.array([0, self.ay, 0])
xyz[mask_eq & (lamb == 0)] = np.array([self.ax, 0, 0])
xyz[mask_eq & (lamb == np.pi)] = np.array([-self.ax, 0, 0])
return xyz
def cart2ellu(self, point: np.ndarray) -> tuple[float, float, float]:
"""
@@ -390,7 +399,7 @@ class EllipsoidTriaxial:
return phi, lamb, h
def geod2cart(self, phi: float, lamb: float, h: float) -> np.ndarray:
def geod2cart(self, phi: float | np.ndarray, lamb: float | np.ndarray, h: float) -> np.ndarray:
"""
Ligas 2012, 250
:param phi: geodätische Breite [rad]
@@ -425,7 +434,7 @@ class EllipsoidTriaxial:
pointH = self. geod2cart(phi, lamb, h)
return pointH
def para2cart(self, u: float, v: float) -> np.ndarray:
def para2cart(self, u: float | np.ndarray, v: float | np.ndarray) -> np.ndarray:
"""
Panou, Korakitits 2020, 4
:param u: Parameter u