1 const cometEllipticalNames = { 2 encke: "Encke", 3 temple2: "Temple 2", 4 hanedaCampos: "Haneda-Campos", 5 schwassmannWachmann2: "Schwassmann-Wachmann 2", 6 borrelly: "Borrelly", 7 whipple: "Whipple", 8 oterma: "Oterma", 9 schaumasse: "Schaumasse", 10 comasSola: "Comas Sola", 11 schwassmannWachmann1: "Schwassmann-Wachmann 1", 12 neujmin1: "Neujmin 1", 13 crommelin: "Crommelin", 14 olbers: "Olbers", 15 ponsBrooks: "Pons-Brooks", 16 halley: "Halley" 17 }; 18 19 const cometParabolicNames = { 20 kohler: "Kohler" 21 }; 22 23 /** 24 * Comet Elliptical Data 25 * 26 * Elements: 27 * 0: Name 28 * 1: epoch_EpochOfPerihelion 29 * 2: peri_LongitudeOfPerihelion 30 * 3: node_LongitudeOfAscendingNode 31 * 4: period_PeriodOfOrbit 32 * 5: axis_SemiMajorAxisOfOrbit 33 * 6: ecc_EccentricityOfOrbit 34 * 7: incl_InclinationOfOrbit 35 */ 36 const cometEllipticalData = [ 37 [cometEllipticalNames.encke, 1974.32, 160.1, 334.2, 3.3, 2.21, 0.85, 12.0], 38 [cometEllipticalNames.temple2, 1972.87, 310.2, 119.3, 5.26, 3.02, 0.55, 12.5], 39 [cometEllipticalNames.hanedaCampos, 1978.77, 12.02, 131.7, 5.37, 3.07, 0.64, 5.81], 40 [cometEllipticalNames.schwassmannWachmann2, 1974.7, 123.3, 126.0, 6.51, 3.49, 0.39, 3.7], 41 [cometEllipticalNames.borrelly, 1974.36, 67.8, 75.1, 6.76, 3.58, 0.63, 30.2], 42 [cometEllipticalNames.whipple, 1970.77, 18.2, 188.4, 7.47, 3.82, 0.35, 10.2], 43 [cometEllipticalNames.oterma, 1958.44, 150.0, 155.1, 7.88, 3.96, 0.14, 4.0], 44 [cometEllipticalNames.schaumasse, 1960.29, 138.1, 86.2, 8.18, 4.05, 0.71, 12.0], 45 [cometEllipticalNames.comasSola, 1969.83, 102.9, 62.8, 8.55, 4.18, 0.58, 13.4], 46 [cometEllipticalNames.schwassmannWachmann1, 1974.12, 334.1, 319.6, 15.03, 6.09, 0.11, 9.7], 47 [cometEllipticalNames.neujmin1, 1966.94, 334.0, 347.2, 17.93, 6.86, 0.78, 15.0], 48 [cometEllipticalNames.crommelin, 1956.82, 86.4, 250.4, 27.89, 9.17, 0.92, 28.9], 49 [cometEllipticalNames.olbers, 1956.46, 150.0, 85.4, 69.47, 16.84, 0.93, 44.6], 50 [cometEllipticalNames.ponsBrooks, 1954.39, 94.2, 255.2, 70.98, 17.2, 0.96, 74.2], 51 [cometEllipticalNames.halley, 1986.112, 170.011, 58.154, 76.0081, 17.9435, 0.9673, 162.2384] 52 ]; 53 54 /** 55 * Comet Parabolic Data 56 * 57 * Elements: 58 * 0: comet_name 59 * 1: epochPeriDay 60 * 2: epochPeriMonth 61 * 3: epochPeriYear 62 * 4: argPeri 63 * 5: node 64 * 6: periDist 65 * 7: incl 66 */ 67 const cometParabolicData = [ 68 [cometParabolicNames.kohler, 10.5659, 11, 1977, 163.4799, 181.8175, 0.990662, 48.7196] 69 ]; 70 71 function getCometEllipticalData(cometName) { 72 let [comet_name, epoch_EpochOfPerihelion, peri_LongitudeOfPerihelion, node_LongitudeOfAscendingNode, period_PeriodOfOrbit, axis_SemiMajorAxisOfOrbit, ecc_EccentricityOfOrbit, incl_InclinationOfOrbit] = ["not found", -99, -99, -99, -99, -99, -99, -99] 73 74 for (let iLoop = 0; iLoop < cometEllipticalData.length; iLoop++) { 75 if (cometEllipticalData[iLoop][0] == cometName) { 76 comet_name = String(cometEllipticalData[iLoop][0]); 77 epoch_EpochOfPerihelion = Number(cometEllipticalData[iLoop][1]); 78 peri_LongitudeOfPerihelion = Number(cometEllipticalData[iLoop][2]); 79 node_LongitudeOfAscendingNode = Number(cometEllipticalData[iLoop][3]); 80 period_PeriodOfOrbit = Number(cometEllipticalData[iLoop][4]); 81 axis_SemiMajorAxisOfOrbit = Number(cometEllipticalData[iLoop][5]); 82 ecc_EccentricityOfOrbit = Number(cometEllipticalData[iLoop][6]); 83 incl_InclinationOfOrbit = Number(cometEllipticalData[iLoop][7]); 84 85 break; 86 } 87 } 88 89 return [comet_name, epoch_EpochOfPerihelion, peri_LongitudeOfPerihelion, node_LongitudeOfAscendingNode, period_PeriodOfOrbit, axis_SemiMajorAxisOfOrbit, ecc_EccentricityOfOrbit, incl_InclinationOfOrbit]; 90 }; 91 92 function getCometParabolicData(cometName) { 93 let [comet_name, epochPeriDay, epochPeriMonth, epochPeriYear, argPeri, node, periDist, incl] = ["not found", -99, -99, -99, -99, -99, -99, -99]; 94 95 for (let iLoop = 0; iLoop < cometParabolicData.length; iLoop++) { 96 if (cometParabolicData[iLoop][0] == cometName) { 97 comet_name = String(cometParabolicData[iLoop][0]); 98 epochPeriDay = Number(cometParabolicData[iLoop][1]); 99 epochPeriMonth = Number(cometParabolicData[iLoop][2]); 100 epochPeriYear = Number(cometParabolicData[iLoop][3]); 101 argPeri = Number(cometParabolicData[iLoop][4]); 102 node = Number(cometParabolicData[iLoop][5]); 103 periDist = Number(cometParabolicData[iLoop][6]); 104 incl = Number(cometParabolicData[iLoop][7]); 105 106 break; 107 } 108 } 109 110 return [comet_name, epochPeriDay, epochPeriMonth, epochPeriYear, argPeri, node, periDist, incl]; 111 } 112 113 114 module.exports = { 115 cometEllipticalNames, 116 cometParabolicNames, 117 cometEllipticalData, 118 cometParabolicData, 119 getCometEllipticalData, 120 getCometParabolicData 121 };