Umrechnung ell cart
This commit is contained in:
@@ -1 +0,0 @@
|
|||||||
print("Hallo Welt!")
|
|
||||||
@@ -120,8 +120,63 @@ class EllipsoidTriaxial:
|
|||||||
return cls(ax, ay, b)
|
return cls(ax, ay, b)
|
||||||
|
|
||||||
def ell2cart(self, beta, lamb, u):
|
def ell2cart(self, beta, lamb, u):
|
||||||
s1 = u**2 - self.b**2
|
"""
|
||||||
s2 = -self.ay**2 * np.sin(beta)**2 - self.b**2 * np.cos(beta)**2
|
Panou 2014 12ff.
|
||||||
s3 = -self.ax**2 * np.sin(lamb)**2 - self.ay**2 * np.cos(lamb)**2
|
:param beta: ellipsoidische Breite
|
||||||
|
:param lamb: ellipsoidische Länge
|
||||||
|
:param u: Höhe
|
||||||
|
:return: kartesische Koordinaten
|
||||||
|
"""
|
||||||
|
beta = wu.deg2rad(beta)
|
||||||
|
lamb = wu.deg2rad(lamb)
|
||||||
|
|
||||||
x = np.sqrt(u**2 + self.ex**2) * np.sqrt(np.cos(beta)**2 + self.ee**2/self.ex**2 * np.sin(beta)**2)
|
# s1 = u**2 - self.b**2
|
||||||
|
# s2 = -self.ay**2 * np.sin(beta)**2 - self.b**2 * np.cos(beta)**2
|
||||||
|
# s3 = -self.ax**2 * np.sin(lamb)**2 - self.ay**2 * np.cos(lamb)**2
|
||||||
|
# print(s1, s2, s3)
|
||||||
|
|
||||||
|
x = np.sqrt(u**2 + self.ex**2) * np.sqrt(np.cos(beta)**2 + self.ee**2/self.ex**2 * np.sin(beta)**2) * np.cos(lamb)
|
||||||
|
y = np.sqrt(u**2 + self.ey**2) * np.cos(beta) * np.sin(lamb)
|
||||||
|
z = u * np.sin(beta) * np.sqrt(1 - self.ee**2/self.ex**2 * np.cos(lamb)**2)
|
||||||
|
|
||||||
|
return x, y, z
|
||||||
|
|
||||||
|
def cart2ell(self, x, y, z):
|
||||||
|
"""
|
||||||
|
Panou 2014 15ff.
|
||||||
|
:param x:
|
||||||
|
:param y:
|
||||||
|
:param z:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
c2 = self.ax**2 + self.ay**2 + self.b**2 - x**2 - y**2 - z**2
|
||||||
|
c1 = (self.ax**2 * self.ay**2 + self.ax**2 * self.b**2 + self.ay**2 * self.b**2 -
|
||||||
|
(self.ay**2+self.b**2) * x**2 - (self.ax**2 + self.b**2) * y**2 - (self.ax**2 + self.ay**2) * z**2)
|
||||||
|
c0 = (self.ax**2 * self.ay**2 * self.b**2 - self.ay**2 * self.b**2 * x**2 -
|
||||||
|
self.ax**2 * self.b**2 * y**2 - self.ax**2 * self.ay**2 * z**2)
|
||||||
|
|
||||||
|
p = (c2**2 - 3*c1) / 9
|
||||||
|
q = (9*c1*c2 - 27*c0 - 2*c2**3) / 54
|
||||||
|
omega = np.arccos(q / np.sqrt(p**3))
|
||||||
|
|
||||||
|
s1 = 2 * np.sqrt(p) * np.cos(omega/3) - c2/3
|
||||||
|
s2 = 2 * np.sqrt(p) * np.cos(omega/3 - 2*np.pi/3) - c2/3
|
||||||
|
s3 = 2 * np.sqrt(p) * np.cos(omega/3 - 4*np.pi/3) - c2/3
|
||||||
|
# print(s1, s2, s3)
|
||||||
|
|
||||||
|
beta = np.arctan(np.sqrt((-self.b**2 - s2) / (self.ay**2 + s2)))
|
||||||
|
lamb = np.arctan(np.sqrt((-self.ay**2 - s3) / (self.ax**2 + s3)))
|
||||||
|
u = np.sqrt(self.b**2 + s1)
|
||||||
|
|
||||||
|
return beta, lamb, u
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
ellips = EllipsoidTriaxial.init_name("Eitschberger1978")
|
||||||
|
# ellips = EllipsoidTriaxial.init_name("Bursa1972")
|
||||||
|
# carts = ellips.ell2cart(10, 30, 6378172)
|
||||||
|
# ells = ellips.cart2ell(carts[0], carts[1], carts[2])
|
||||||
|
|
||||||
|
carts = ellips.ell2cart(90, 0, 6356754.4)
|
||||||
|
# print(aus.gms("beta", ells[0], 3), aus.gms("lambda", ells[1], 3), "u =", ells[2])
|
||||||
|
pass
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
import numpy as np
|
|
||||||
|
|
||||||
def ell2cart()
|
|
||||||
Reference in New Issue
Block a user