Go to the documentation of this file.
46 # pragma warning (disable: 4127)
56 , tol2_(
real(0.1) * tol_)
98 t1 = (d1 != 0 ? snu * dnv / d1 : (snu < 0 ? -overflow : overflow)),
100 (snu < 0 ? -overflow : overflow));
104 lam = (d1 != 0 &&
d2 != 0) ?
105 atan2(dnu * snv, cnu * cnv) -
_e *
atan2(
_e * cnu * snv, dnu * cnv) :
197 real snu, cnu, dnu, snv, cnv, dnv;
200 real tau1, lam1, du1, dv1;
201 zeta(u, snu, cnu, dnu,
v, snv, cnv, dnv, tau1, lam1);
202 dwdzeta(u, snu, cnu, dnu,
v, snv, cnv, dnv, du1, dv1);
207 delu = tau1 * du1 - lam1 * dv1,
208 delv = tau1 * dv1 + lam1 * du1;
214 if (!(delw2 >= stol2))
225 xi =
_Eu.
E(snu, cnu, dnu) -
_mu * snu * cnu * dnu /
d;
226 eta =
v -
_Ev.
E(snv, cnv, dnv) +
_mv * snv * cnv * dnv /
d;
238 dnr = dnu * cnv * dnv,
239 dni = -
_mu * snu * cnu * snv;
241 dv = 2 * dnr * dni /
d;
275 deta = eta -
_Ev.
KE(),
301 real snu, cnu, dnu, snv, cnv, dnv;
304 real xi1, eta1, du1, dv1;
305 sigma(u, snu, cnu, dnu,
v, snv, cnv, dnv, xi1, eta1);
306 dwdsigma(u, snu, cnu, dnu,
v, snv, cnv, dnv, du1, dv1);
310 delu = xi1 * du1 - eta1 * dv1,
311 delv = xi1 * dv1 + eta1 * du1;
317 if (!(delw2 >=
tol2_))
374 }
else if (
lat == 0 &&
lon == 90 * (1 -
_e)) {
381 real snu, cnu, dnu, snv, cnv, dnv;
386 sigma(u, snu, cnu, dnu,
v, snv, cnv, dnv,
xi, eta);
390 x = eta *
_a *
_k0 * lonsign;
397 zeta(u, snu, cnu, dnu,
v, snv, cnv, dnv, tau, lam);
399 Scale(tau, lam, snu, cnu, dnu, snv, cnv, dnv,
gamma, k);
404 gamma *= latsign * lonsign;
427 if (
xi == 0 && eta ==
_Ev.
KE()) {
433 real snu, cnu, dnu, snv, cnv, dnv;
437 if (
v != 0 || u !=
_Eu.
K()) {
438 zeta(u, snu, cnu, dnu,
v, snv, cnv, dnv, tau, lam);
443 Scale(tau, lam, snu, cnu, dnu, snv, cnv, dnv,
gamma, k);
458 gamma *= latsign * lonsign;
static T AngNormalize(T x)
bool sigmainv0(real xi, real eta, real &u, real &v) const
const EIGEN_DEVICE_FUNC AtanReturnType atan() const
static const double d[K][N]
An exact implementation of the transverse Mercator projection.
Jet< T, N > sin(const Jet< T, N > &f)
Namespace for GeographicLib.
static bool isfinite(T x)
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
static T tauf(T taup, T es)
void zetainv(real taup, real lam, real &u, real &v) const
void sncndn(real x, real &sn, real &cn, real &dn) const
int EIGEN_BLAS_FUNC() scal(int *n, RealScalar *palpha, RealScalar *px, int *incx)
void Reverse(real lon0, real x, real y, real &lat, real &lon, real &gamma, real &k) const
Exception handling for GeographicLib.
Jet< T, N > cos(const Jet< T, N > &f)
void dwdzeta(real u, real snu, real cnu, real dnu, real v, real snv, real cnv, real dnv, real &du, real &dv) const
#define GEOGRAPHICLIB_PANIC
void sigma(real u, real snu, real cnu, real dnu, real v, real snv, real cnv, real dnv, real &xi, real &eta) const
void Scale(real tau, real lam, real snu, real cnu, real dnu, real snv, real cnv, real dnv, real &gamma, real &k) const
void zeta(real u, real snu, real cnu, real dnu, real v, real snv, real cnv, real dnv, real &taup, real &lam) const
static T AngDiff(T x, T y, T &e)
bool zetainv0(real psi, real lam, real &u, real &v) const
Jet< T, N > pow(const Jet< T, N > &f, double g)
TransverseMercatorExact(real a, real f, real k0, bool extendp=false)
AnnoyingScalar atan2(const AnnoyingScalar &y, const AnnoyingScalar &x)
Point2(* f)(const Point3 &, OptionalJacobian< 2, 3 >)
static T taupf(T tau, T es)
void Forward(real lon0, real lat, real lon, real &x, real &y, real &gamma, real &k) const
void dwdsigma(real u, real snu, real cnu, real dnu, real v, real snv, real cnv, real dnv, real &du, real &dv) const
Array< int, Dynamic, 1 > v
const EIGEN_DEVICE_FUNC SinhReturnType sinh() const
static const TransverseMercatorExact & UTM()
Jet< T, N > sqrt(const Jet< T, N > &f)
Header for GeographicLib::TransverseMercatorExact class.
void sigmainv(real xi, real eta, real &u, real &v) const
gtsam
Author(s):
autogenerated on Sun Dec 22 2024 04:18:05