using System; namespace CoordinateSharp { internal partial class MeeusTables { //Ch 47 private static readonly Double[] Table47A_Arguments = new Double[] { 0,0,1,0, 2,0,-1,0, 2,0,0,0, 0,0,2,0, 0,1,0,0, 0,0,0,2, 2,0,-2,0, 2,-1,-1,0, 2,0,1,0, 2,-1,0,0, 0,1,-1,0, 1,0,0,0, 0,1,1,0, 2,0,0,-2, 0,0,1,2, 0,0,1,-2, 4,0,-1,0, 0,0,3,0, 4,0,-2,0, 2,1,-1,0, 2,1,0,0, 1,0,-1,0, 1,1,0,0, 2,-1,1,0, 2,0,2,0, 4,0,0,0, 2,0,-3,0, 0,1,-2,0, 2,0,-1,2, 2,-1,-2,0, 1,0,1,0, 2,-2,0,0, 0,1,2,0, 0,2,0,0, 2,-2,-1,0, 2,0,1,-2, 2,0,0,2, 4,-1,-1,0, 0,0,2,2, 3,0,-1,0, 2,1,1,0, 4,-1,-2,0, 0,2,-1,0, 2,2,-1,0, 2,1,-2,0, 2,-1,0,-2, 4,0,1,0, 0,0,4,0, 4,-1,0,0, 1,0,-2,0, 2,1,0,-2, 0,0,2,-2, 1,1,1,0, 3,0,-2,0, 4,0,-3,0, 2,-1,2,0, 0,2,1,0, 1,1,-1,0, 2,0,3,0, 2,0,-1,-2 }; private static readonly Double[] Table47B_Arguments = new Double[] { 0,0,0,1, 0,0,1,1, 0,0,1,-1, 2,0,0,-1, 2,0,-1,1, 2,0,-1,-1, 2,0,0,1, 0,0,2,1, 2,0,1,-1, 0,0,2,-1, 2,-1,0,-1, 2,0,-2,-1, 2,0,1,1, 2,1,0,-1, 2,-1,-1,1, 2,-1,0,1, 2,-1,-1,-1, 0,1,-1,-1, 4,0,-1,-1, 0,1,0,1, 0,0,0,3, 0,1,-1,1, 1,0,0,1, 0,1,1,1, 0,1,1,-1, 0,1,0,-1, 1,0,0,-1, 0,0,3,1, 4,0,0,-1, 4,0,-1,1, 0,0,1,-3, 4,0,-2,1, 2,0,0,-3, 2,0,2,-1, 2,-1,1,-1, 2,0,-2,1, 0,0,3,-1, 2,0,2,1, 2,0,-3,-1, 2,1,-1,1, 2,1,0,1, 4,0,0,1, 2,-1,1,1, 2,-2,0,-1, 0,0,1,3, 2,1,1,-1, 1,1,0,-1, 1,1,0,1, 0,1,-2,-1, 2,1,-1,-1, 1,0,1,1, 2,-1,-2,-1, 0,1,2,1, 4,0,-2,-1, 4,-1,-1,-1, 1,0,1,-1, 4,0,1,-1, 1,0,-1,-1, 4,-1,0,-1, 2,-2,0,1, }; private static readonly Double[] Table47A_El_Er = new Double[] { //El 6288774, 1274027,658314,213618,-185116,-114332,58793,57066,53322,45758, -40923,-34720,-30383,15327,-12528,10980,10675,10034,8548,-7888,-6766,-5163, 4987,4036,3994,3861,3665,-2689,-2602,2390,-2348,2236,-2120,-2069,2048,-1773, -1595,1215,-1110,-892,-810,759,-713,-700,691,596,549,537,520,-487,-399,-381, 351,-340,330,327,-323,299,294,0, //Er -20905355,-3699111,-2955968,-569925,48888,-3149,246158,-152138,-170733,-204586, -129620,108743,104755,10321,0,79661,-34782,-23210,-21636,24208,30824,-8379,-16675, -12831,-10445,-11650,14403,-7003,0,10056,6322,-9884,5751,0,-4950,4130,0,-3958,0,3258, 2616,-1897,-2117,2354,0,0,-1423,-1117,-1571,-1739,0,-4421,0,0,0,0,1165,0,0,8752 }; private static readonly Double[] Table47B_Eb = new Double[] { 5128122,280602,277693,173237,55413,46271,32573,17198,9266,8822, 8216,4324,4200,-3359,2463,2211,2065,-1870,1828,-1794,-1749,-1565,-1491, -1475,-1410,-1344,-1335,1107,1021,833, 777,671,607,596,491,-451,439,422,421,-366,-351,331,315,302,-283,-229, 223,223,-220,-220,-185,181,-177,176,166,-164,132,-119,115,107 }; private static Double Get_Table47A_Values(Double[] values, Int32 l, Double t, Boolean sine) { //sine true returns El //sine false return Er //Er values start at 60 in the Table47A_El_Er array. Int32 nl = l * 4; if (sine) { Double e = 1; if (Table47A_Arguments[nl + 1] != 0) { e = 1 - .002516 * t - .0000074 * Math.Pow(t, 2); if (Math.Abs(Table47A_Arguments[nl + 1]) == 2) { e *= e; } } return Table47A_El_Er[l] * e * Math.Sin(Table47A_Arguments[nl] * values[0] + Table47A_Arguments[nl + 1] * values[1] + Table47A_Arguments[nl + 2] * values[2] + Table47A_Arguments[nl + 3] * values[3]); } else { Double e = 1; if (Table47A_Arguments[nl + 1] != 0) { e = 1 - .002516 * t - .0000074 * Math.Pow(t, 2); if (Math.Abs(Table47A_Arguments[nl + 1]) == 2) { e *= e; } } return Table47A_El_Er[l + 60] * e * Math.Cos(Table47A_Arguments[nl] * values[0] + Table47A_Arguments[nl + 1] * values[1] + Table47A_Arguments[nl + 2] * values[2] + Table47A_Arguments[nl + 3] * values[3]); } } private static Double Get_Table47B_Values(Double[] values, Int32 l, Double t) { Int32 nl = l * 4; Double e = 1; if (Table47B_Arguments[nl + 1] != 0) { e = 1 - .002516 * t - .0000074 * Math.Pow(t, 2); if (Math.Abs(Table47B_Arguments[nl + 1]) == 2) { e *= e; } } return Table47B_Eb[l] * e * Math.Sin(Table47B_Arguments[nl] * values[0] + Table47B_Arguments[nl + 1] * values[1] + Table47B_Arguments[nl + 2] * values[2] + Table47B_Arguments[nl + 3] * values[3]); } } }