63 real eps_, epsx_, epsx2_, tol_, tol0_;
64 real _a, _f, _fm, _e2, _e, _e2m, _qZ, _qx;
65 real _sign, _lat0, _k0;
66 real _n0, _m02, _nrho0, _k2, _txi0, _scxi0, _sxi0;
67 static const int numit_ = 5;
68 static const int numit0_ = 20;
69 static real hyp(real x) {
71 return hypot(
real(1), x);
76 real atanhee(real x)
const {
77 using std::atan;
using std::atanh;
78 return _f > 0 ? atanh(_e * x)/_e : (_f < 0 ? (atan(_e * x)/_e) : x);
81 static real atanhxm1(real x);
100 static real Dsn(real x, real y, real sx, real sy) {
103 return t > 0 ? (x + y) * Math::sq( (sx * sy)/t ) / (sx + sy) :
104 (x - y != 0 ? (sx - sy) / (x - y) : 1);
108 real Datanhee(real x, real y)
const {
109 real t = x - y, d = 1 - _e2 * x * y;
110 return t == 0 ? 1 / d :
111 (x*y < 0 ? atanhee(x) - atanhee(y) : atanhee(t / d)) / t;
114 real DDatanhee(real x, real y)
const;
115 real DDatanhee0(real x, real y)
const;
116 real DDatanhee1(real x, real y)
const;
117 real DDatanhee2(real x, real y)
const;
118 void Init(real sphi1, real cphi1, real sphi2, real cphi2, real k1);
119 real txif(real tphi)
const;
120 real tphif(real txi)
const;
179 real sinlat1, real coslat1,
180 real sinlat2, real coslat2,
194 void SetScale(real lat, real k =
real(1));
214 void Forward(real lon0, real lat, real lon,
215 real& x, real& y, real& gamma, real& k)
const;
235 void Reverse(real lon0, real x, real y,
236 real& lat, real& lon, real& gamma, real& k)
const;
243 real& x, real& y)
const {
245 Forward(lon0, lat, lon, x, y, gamma, k);
253 real& lat, real& lon)
const {
255 Reverse(lon0, x, y, lat, lon, gamma, k);