27 lines
1.0 KiB
Python
27 lines
1.0 KiB
Python
from numpy import *
|
|
import scipy as sp
|
|
from ellipsoide import EllipsoidBiaxial
|
|
from typing import Tuple
|
|
|
|
|
|
def gha1(re: EllipsoidBiaxial, phi0: float, lamb0: float, alpha0:float, s: float) -> Tuple[float, float, float]:
|
|
psi0 = re.phi2psi(phi0)
|
|
clairant = arcsin(cos(psi0) * sin(alpha0))
|
|
sigma0 = arcsin(sin(psi0) / cos(clairant))
|
|
|
|
sqrt_sigma = lambda sigma: sqrt(1 + re.e_ ** 2 * cos(clairant) ** 2 * sin(sigma) ** 2)
|
|
int_sqrt_sigma = lambda sigma: sp.integrate.quad(sqrt_sigma, sigma0, sigma)[0]
|
|
|
|
f_sigma1_i = lambda sigma1_i: (int_sqrt_sigma(sigma1_i) - s / re.b)
|
|
|
|
sigma1_0 = sigma0 + s / re.a
|
|
sigma1 = sp.optimize.newton(f_sigma1_i, sigma1_0)
|
|
psi1 = arcsin(cos(clairant) * sin(sigma1))
|
|
phi1 = re.psi2phi(psi1)
|
|
alpha1 = arcsin(sin(clairant) / cos(psi1))
|
|
|
|
f_d_lambda = lambda sigma: sin(clairant) * sqrt_sigma(sigma) / (1 - cos(clairant) ** 2 * sin(sigma) ** 2)
|
|
d_lambda = sqrt(1-re.e**2) * sp.integrate.quad(f_d_lambda, sigma0, sigma1)[0]
|
|
lamb1 = lamb0 + d_lambda
|
|
return phi1, lamb1, alpha1
|