Commit 309b4943 authored by Calvin Metcalf's avatar Calvin Metcalf
Browse files

decrease complexity

parent bfaa9d11
Loading
Loading
Loading
Loading
+70 −58
Original line number Diff line number Diff line
@@ -300,7 +300,32 @@ exports.pj_inv_mlfn = function(arg, es, en) {
  //..reportError("cass:pj_inv_mlfn: Convergence error");
  return phi;
};

exports.nadInterBreakout = function(indx, frct, letter, number, ct) {
  var inx;
  if (indx[letter] < 0) {
    if (!(indx[letter] === -1 && frct[letter] > 0.99999999999)) {
      return false;
    }
    indx[letter]++;
    frct[letter] = 0;
  }
  else {
    inx = indx[letter] + 1;
    if (inx >= ct.lim[number]) {
      if (!(inx === ct.lim[number] && frct[letter] < 1e-11)) {
        return false;
      }
      if (letter === 'x') {
        indx[letter]--;
      }
      else {
        indx[letter]++;
      }
      frct[letter] = 1;
    }
  }
  return [indx, frct];
};
/**
 * Determine correction values
 * source: nad_intr.c (DGR: 2012-07-29)
@@ -324,42 +349,25 @@ exports.nad_intr = function(pin, ct) {
    x: Number.NaN,
    y: Number.NaN
  };
  var inx;
  if (indx.x < 0) {
    if (!(indx.x === -1 && frct.x > 0.99999999999)) {
      return val;
    }
    indx.x++;
    frct.x = 0;


  var temp = exports.nadInterBreakout(indx, frct, 'x', 0, ct);
  if (temp) {
    indx = temp[0];
    frct = temp[1];
  }
  else {
    inx = indx.x + 1;
    if (inx >= ct.lim[0]) {
      if (!(inx === ct.lim[0] && frct.x < 1e-11)) {
        return val;
      }
      indx.x--;
      frct.x = 1;
    }
  }
  if (indx.y < 0) {
    if (!(indx.y === -1 && frct.y > 0.99999999999)) {
    return val;
  }
    indx.y++;
    frct.y = 0;
  temp = exports.nadInterBreakout(indx, frct, 'y', 1, ct);
  if (temp) {
    indx = temp[0];
    frct = temp[1];
  }
  else {
    inx = indx.y + 1;
    if (inx >= ct.lim[1]) {
      if (!(inx === ct.lim[1] && frct.y < 1e-11)) {
    return val;
  }
      indx.y++;
      frct.y = 1;
    }
  }
  inx = (indx.y * ct.lim[0]) + indx.x;
  var inx = (indx.y * ct.lim[0]) + indx.x;
  var f00 = {
    x: ct.cvs[inx][0],
    y: ct.cvs[inx][1]
@@ -392,23 +400,7 @@ exports.nad_intr = function(pin, ct) {
 * Correct value
 * source: nad_cvt.c (DGR: 2012-07-29)
 */
exports.nad_cvt = function(pin, inverse, ct) {
  var val = {
    "x": Number.NaN,
    "y": Number.NaN
  };
  if (isNaN(pin.x)) {
    return val;
  }
  var tb = {
    "x": pin.x,
    "y": pin.y
  };
  tb.x -= ct.ll[0];
  tb.y -= ct.ll[1];
  tb.x = exports.adjust_lon(tb.x - exports.PI) + exports.PI;
  var t = exports.nad_intr(tb, ct);
  if (inverse) {
exports.inverseNadCvt = function(t, val, tb, ct) {
  if (isNaN(t.x)) {
    return val;
  }
@@ -436,6 +428,26 @@ exports.nad_cvt = function(pin, inverse, ct) {
  }
  val.x = exports.adjust_lon(t.x + ct.ll[0]);
  val.y = t.y + ct.ll[1];
  return val;
};
exports.nad_cvt = function(pin, inverse, ct) {
  var val = {
    "x": Number.NaN,
    "y": Number.NaN
  };
  if (isNaN(pin.x)) {
    return val;
  }
  var tb = {
    "x": pin.x,
    "y": pin.y
  };
  tb.x -= ct.ll[0];
  tb.y -= ct.ll[1];
  tb.x = exports.adjust_lon(tb.x - exports.PI) + exports.PI;
  var t = exports.nad_intr(tb, ct);
  if (inverse) {
    return exports.inverseNadCvt(t, val, tb, ct);
  }
  else {
    if (!isNaN(t.x)) {