35 const double EPSILON = 1.0e-10;
56 Robinson::Robinson(
Pvl &label,
bool allowDefaults) :
84 m_xlr << 0 << 0.9986 <<
110 if ((allowDefaults) && (!mapGroup.
hasKeyword(
"CenterLongitude"))) {
123 QString message =
"Invalid label group [Mapping]";
141 if (!Projection::operator==(proj))
return false;
184 double latRadians = lat *
DEG2RAD;
185 double lonRadians = lon *
DEG2RAD;
190 double p2 = fabs(latRadians / 5.0 / DEG2RAD);
191 long ip1 = (long) (p2 - EPSILON);
200 m_xlr[ip1 + 1]) / 2.0 +
201 p2 * p2 * (m_xlr[ip1 + 3] - 2.0 * m_xlr[ip1 + 2] +
202 m_xlr[ip1 + 1])/2.0) * deltaLon;
205 m_pr[ip1 +1]) / 2.0 + p2 * p2 * (m_pr[ip1 + 3] -
206 2.0 * m_pr[ip1 + 2] + m_pr[ip1 + 1]) / 2.0);
207 if (lat < 0) y *= -1.;
235 double phid = yy * 90.0;
236 double p2 = fabs(phid / 5.0);
237 long ip1 = (long) (p2 - EPSILON);
238 if (ip1 == 0) ip1 = 1;
252 u = m_pr[ip1 + 3] - m_pr[ip1 + 1];
253 v = m_pr[ip1 + 3] - 2.0 * m_pr[ip1 + 2] + m_pr[ip1 + 1];
254 t = 2.0 * (fabs(yy) - m_pr[ip1 + 2]) / u;
256 p2 = t * (1.0 - c * t * (1.0 - 2.0 * c * t));
258 if ((p2 >= 0.0) || (ip1 == 1)) {
259 phid = (p2 + (double) ip1 ) * 5.0;
260 if (y < 0) phid *= -1;
263 p2 = fabs(phid / 5.0);
264 ip1 = (long) (p2 - EPSILON);
271 m_pr[ip1 +1]) / 2.0 + p2 * p2 * (m_pr[ip1 + 3] -
272 2.0 * m_pr[ip1 + 2] + m_pr[ip1 + 1])/2.0);
273 if (y < 0) y1 *= -1.;
280 }
while (fabs(y1 - y) > .00001);
297 p2 * (m_xlr[ip1 + 3] - m_xlr[ip1 + 1]) / 2.0 +
298 p2 * p2 * (m_xlr[ip1 + 3] - 2.0 * m_xlr[ip1 + 2] +
299 m_xlr[ip1 + 1]) / 2.0);
334 double &minY,
double &maxY) {
413 bool allowDefaults) {