Loading lib/common.js +70 −58 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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] Loading Loading @@ -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; } Loading Loading @@ -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)) { Loading Loading
lib/common.js +70 −58 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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] Loading Loading @@ -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; } Loading Loading @@ -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)) { Loading