43 real _a, _b, _c, _ab2, _bc2, _ac2;
45 static void norm(real&
x, real&
y)
61 , _ab2((_a - _b) * (_a + _b))
62 , _bc2((_b - _c) * (_b + _c))
63 , _ac2((_a - _c) * (_a + _c))
64 , _ex(_ab2 / _ac2 *
Math::sq(_c / _b), -_ab2 /
Math::sq(_b),
65 _bc2 / _ac2 *
Math::sq(_a / _b),
Math::sq(_a / _b))
66 , _ey(_bc2 / _ac2 *
Math::sq(_a / _b), +_bc2 /
Math::sq(_b),
67 _ab2 / _ac2 *
Math::sq(_c / _b),
Math::sq(_c / _b))
69 if (!(a >= b && b >= c && c > 0))
70 throw GeographicErr(
"JacobiConformal: axes are not in order");
72 throw GeographicErr(
"JacobiConformal: use alternate constructor for sphere");
90 , _ab2(ab * (_a + _b))
91 , _bc2(bc * (_b + _c))
93 , _ex(_ab2 / _ac2 *
Math::sq(_c / _b),
94 -(_a - _b) * (_a + _b) /
Math::sq(_b),
95 _bc2 / _ac2 *
Math::sq(_a / _b),
Math::sq(_a / _b))
96 , _ey(_bc2 / _ac2 *
Math::sq(_a / _b),
97 +(_b - _c) * (_b + _c) /
Math::sq(_b),
98 _ab2 / _ac2 *
Math::sq(_c / _b),
Math::sq(_c / _b))
100 if (!(a >= b && b >= c && c > 0 && ab >= 0 && bc >= 0))
101 throw GeographicErr(
"JacobiConformal: axes are not in order");
103 throw GeographicErr(
"JacobiConformal: ab + bc must be positive");
117 real somg1 = _b * somg, comg1 = _a * comg; norm(somg1, comg1);
119 * _ex.
Pi(somg1, comg1, _ex.
Delta(somg1, comg1));
130 using std::abs;
using std::sin;
using std::cos;
133 somg = abs(omg) == 180 ? 0 : sin(a),
134 comg = abs(omg) == 90 ? 0 : cos(a);
149 real sbet1 = _b * sbet, cbet1 = _c * cbet; norm(sbet1, cbet1);
151 * _ey.
Pi(sbet1, cbet1, _ey.
Delta(sbet1, cbet1));
162 using std::abs;
using std::sin;
using std::cos;
165 sbet = abs(bet) == 180 ? 0 : sin(a),
166 cbet = abs(bet) == 90 ? 0 : cos(a);
Mathematical functions needed by GeographicLib.
Elliptic integrals and functions.
Namespace for GeographicLib.
Header for GeographicLib::EllipticFunction class.
Exception handling for GeographicLib.
Math::real Delta(real sn, real cn) const