ootk 2.0.1 → 4.0.0-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +14 -14
- package/CHANGELOG.md +122 -0
- package/README.md +27 -40
- package/jest.config.ts +30 -0
- package/lib/coordinate/Hill.d.ts +50 -0
- package/lib/coordinate/Hill.js +214 -0
- package/lib/coordinate/Hill.js.map +1 -0
- package/lib/coordinate/index.d.ts +1 -0
- package/lib/coordinate/index.js +2 -0
- package/lib/coordinate/index.js.map +1 -0
- package/lib/covariance/CovarianceSample.d.ts +44 -0
- package/lib/covariance/CovarianceSample.js +146 -0
- package/lib/covariance/CovarianceSample.js.map +1 -0
- package/lib/covariance/StateCovariance.d.ts +41 -0
- package/lib/covariance/StateCovariance.js +62 -0
- package/lib/covariance/StateCovariance.js.map +1 -0
- package/lib/force/AtmosphericDrag.d.ts +32 -0
- package/lib/force/AtmosphericDrag.js +66 -0
- package/lib/force/AtmosphericDrag.js.map +1 -0
- package/{dist/ootk.d.ts → lib/force/EarthGravity.d.ts} +13 -11
- package/lib/force/EarthGravity.js +115 -0
- package/lib/force/EarthGravity.js.map +1 -0
- package/lib/force/Force.d.ts +25 -0
- package/lib/force/Force.js +30 -0
- package/lib/force/Force.js.map +1 -0
- package/lib/force/ForceModel.d.ts +38 -0
- package/lib/force/ForceModel.js +71 -0
- package/lib/force/ForceModel.js.map +1 -0
- package/lib/force/Gravity.d.ts +41 -0
- package/lib/force/Gravity.js +48 -0
- package/lib/force/Gravity.js.map +1 -0
- package/lib/force/SolarRadiationPressure.d.ts +27 -0
- package/lib/force/SolarRadiationPressure.js +42 -0
- package/lib/force/SolarRadiationPressure.js.map +1 -0
- package/lib/force/ThirdBodyGravity.d.ts +27 -0
- package/lib/force/ThirdBodyGravity.js +56 -0
- package/lib/force/ThirdBodyGravity.js.map +1 -0
- package/lib/force/Thrust.d.ts +35 -0
- package/lib/force/Thrust.js +53 -0
- package/lib/force/Thrust.js.map +1 -0
- package/lib/interpolator/ChebyshevCoefficients.d.ts +54 -0
- package/lib/interpolator/ChebyshevCoefficients.js +90 -0
- package/lib/interpolator/ChebyshevCoefficients.js.map +1 -0
- package/lib/interpolator/ChebyshevInterpolator.d.ts +39 -0
- package/lib/interpolator/ChebyshevInterpolator.js +71 -0
- package/lib/interpolator/ChebyshevInterpolator.js.map +1 -0
- package/lib/interpolator/CubicSpline.d.ts +36 -0
- package/lib/interpolator/CubicSpline.js +64 -0
- package/lib/interpolator/CubicSpline.js.map +1 -0
- package/lib/interpolator/CubicSplineInterpolator.d.ts +37 -0
- package/lib/interpolator/CubicSplineInterpolator.js +78 -0
- package/lib/interpolator/CubicSplineInterpolator.js.map +1 -0
- package/lib/interpolator/FieldInterpolator.d.ts +26 -0
- package/lib/interpolator/FieldInterpolator.js +31 -0
- package/lib/interpolator/FieldInterpolator.js.map +1 -0
- package/lib/interpolator/Interpolator.d.ts +23 -0
- package/lib/interpolator/Interpolator.js +48 -0
- package/lib/interpolator/Interpolator.js.map +1 -0
- package/lib/interpolator/LagrangeInterpolator.d.ts +42 -0
- package/lib/interpolator/LagrangeInterpolator.js +156 -0
- package/lib/interpolator/LagrangeInterpolator.js.map +1 -0
- package/lib/interpolator/StateInterpolator.d.ts +29 -0
- package/lib/interpolator/StateInterpolator.js +37 -0
- package/lib/interpolator/StateInterpolator.js.map +1 -0
- package/lib/interpolator/VerletBlendInterpolator.d.ts +44 -0
- package/lib/interpolator/VerletBlendInterpolator.js +115 -0
- package/lib/interpolator/VerletBlendInterpolator.js.map +1 -0
- package/lib/maneuver/TwoBurnOrbitTransfer.d.ts +43 -0
- package/lib/maneuver/TwoBurnOrbitTransfer.js +62 -0
- package/lib/maneuver/TwoBurnOrbitTransfer.js.map +1 -0
- package/lib/maneuver/Waypoint.d.ts +66 -0
- package/lib/maneuver/Waypoint.js +152 -0
- package/lib/maneuver/Waypoint.js.map +1 -0
- package/lib/objects/DetailedSatellite.d.ts +94 -0
- package/lib/objects/DetailedSatellite.js +140 -0
- package/lib/objects/DetailedSatellite.js.map +1 -0
- package/lib/objects/DetailedSensor.d.ts +43 -0
- package/lib/objects/DetailedSensor.js +45 -0
- package/lib/objects/DetailedSensor.js.map +1 -0
- package/lib/objects/{space-object.d.ts → LandObject.d.ts} +19 -21
- package/lib/objects/LandObject.js +28 -0
- package/lib/objects/LandObject.js.map +1 -0
- package/lib/objects/Marker.d.ts +21 -0
- package/lib/objects/Marker.js +25 -0
- package/lib/objects/Marker.js.map +1 -0
- package/lib/objects/index.d.ts +5 -4
- package/lib/objects/index.js +5 -4
- package/lib/objects/index.js.map +1 -1
- package/lib/observation/Observation.d.ts +51 -0
- package/lib/observation/Observation.js +71 -0
- package/lib/observation/Observation.js.map +1 -0
- package/lib/observation/ObservationOptical.d.ts +47 -0
- package/lib/observation/ObservationOptical.js +101 -0
- package/lib/observation/ObservationOptical.js.map +1 -0
- package/lib/observation/ObservationRadar.d.ts +43 -0
- package/lib/observation/ObservationRadar.js +90 -0
- package/lib/observation/ObservationRadar.js.map +1 -0
- package/lib/observation/ObservationUtils.d.ts +21 -0
- package/lib/observation/ObservationUtils.js +33 -0
- package/lib/observation/ObservationUtils.js.map +1 -0
- package/lib/observation/PropagatorPairs.d.ts +31 -0
- package/lib/observation/PropagatorPairs.js +40 -0
- package/lib/observation/PropagatorPairs.js.map +1 -0
- package/lib/ootk.d.ts +10 -9
- package/lib/ootk.js +10 -9
- package/lib/ootk.js.map +1 -1
- package/lib/operations/BoxMuller.d.ts +41 -0
- package/lib/operations/BoxMuller.js +66 -0
- package/lib/operations/BoxMuller.js.map +1 -0
- package/lib/operations/EulerAngles.d.ts +50 -0
- package/lib/operations/EulerAngles.js +111 -0
- package/lib/operations/EulerAngles.js.map +1 -0
- package/lib/operations/Quaternion.d.ts +57 -0
- package/lib/operations/Quaternion.js +164 -0
- package/lib/operations/Quaternion.js.map +1 -0
- package/lib/operations/RandomGaussianSource.d.ts +25 -0
- package/lib/operations/RandomGaussianSource.js +43 -0
- package/lib/operations/RandomGaussianSource.js.map +1 -0
- package/lib/operations/index.d.ts +4 -0
- package/lib/operations/index.js +5 -0
- package/lib/operations/index.js.map +1 -0
- package/lib/optimize/ChebyshevCompressor.d.ts +31 -0
- package/lib/optimize/ChebyshevCompressor.js +80 -0
- package/lib/optimize/ChebyshevCompressor.js.map +1 -0
- package/lib/optimize/DownhillSimplex.d.ts +50 -0
- package/lib/optimize/DownhillSimplex.js +168 -0
- package/lib/optimize/DownhillSimplex.js.map +1 -0
- package/lib/optimize/GoldenSection.d.ts +33 -0
- package/lib/optimize/GoldenSection.js +49 -0
- package/lib/optimize/GoldenSection.js.map +1 -0
- package/lib/optimize/PolynomialRegression.d.ts +37 -0
- package/lib/optimize/PolynomialRegression.js +66 -0
- package/lib/optimize/PolynomialRegression.js.map +1 -0
- package/lib/optimize/PolynomicalRegressionResult.d.ts +28 -0
- package/lib/optimize/PolynomicalRegressionResult.js +32 -0
- package/lib/optimize/PolynomicalRegressionResult.js.map +1 -0
- package/lib/optimize/SimpleLinearRegression.d.ts +41 -0
- package/lib/optimize/SimpleLinearRegression.js +107 -0
- package/lib/optimize/SimpleLinearRegression.js.map +1 -0
- package/lib/optimize/SimplexEntry.d.ts +33 -0
- package/lib/optimize/SimplexEntry.js +39 -0
- package/lib/optimize/SimplexEntry.js.map +1 -0
- package/lib/orbit_determination/BatchLeastSquaresOD.d.ts +54 -0
- package/lib/orbit_determination/BatchLeastSquaresOD.js +118 -0
- package/lib/orbit_determination/BatchLeastSquaresOD.js.map +1 -0
- package/lib/orbit_determination/BatchLeastSquaresResult.d.ts +29 -0
- package/lib/orbit_determination/BatchLeastSquaresResult.js +31 -0
- package/lib/orbit_determination/BatchLeastSquaresResult.js.map +1 -0
- package/lib/orbit_determination/GibbsIOD.d.ts +33 -0
- package/lib/orbit_determination/GibbsIOD.js +70 -0
- package/lib/orbit_determination/GibbsIOD.js.map +1 -0
- package/lib/orbit_determination/GoodingIOD.d.ts +52 -0
- package/lib/orbit_determination/GoodingIOD.js +244 -0
- package/lib/orbit_determination/GoodingIOD.js.map +1 -0
- package/{dist/objects/space-object.d.ts → lib/orbit_determination/HerrickGibbsIOD.d.ts} +17 -22
- package/lib/orbit_determination/HerrickGibbsIOD.js +49 -0
- package/lib/orbit_determination/HerrickGibbsIOD.js.map +1 -0
- package/lib/orbit_determination/LambertIOD.d.ts +46 -0
- package/lib/orbit_determination/LambertIOD.js +199 -0
- package/lib/orbit_determination/LambertIOD.js.map +1 -0
- package/lib/orbit_determination/ModifiedGoodingIOD.d.ts +41 -0
- package/lib/orbit_determination/ModifiedGoodingIOD.js +82 -0
- package/lib/orbit_determination/ModifiedGoodingIOD.js.map +1 -0
- package/lib/propagator/DormandPrince54Propagator.d.ts +29 -0
- package/lib/propagator/DormandPrince54Propagator.js +68 -0
- package/lib/propagator/DormandPrince54Propagator.js.map +1 -0
- package/lib/propagator/KeplerPropagator.d.ts +36 -0
- package/lib/propagator/KeplerPropagator.js +81 -0
- package/lib/propagator/KeplerPropagator.js.map +1 -0
- package/lib/propagator/Propagator.d.ts +35 -0
- package/lib/propagator/Propagator.js +163 -0
- package/lib/propagator/Propagator.js.map +1 -0
- package/lib/propagator/RkCheckpoint.d.ts +23 -0
- package/lib/propagator/RkCheckpoint.js +26 -0
- package/lib/propagator/RkCheckpoint.js.map +1 -0
- package/lib/propagator/RkResult.d.ts +24 -0
- package/lib/propagator/RkResult.js +28 -0
- package/lib/propagator/RkResult.js.map +1 -0
- package/lib/propagator/RungeKutta4Propagator.d.ts +46 -0
- package/lib/propagator/RungeKutta4Propagator.js +132 -0
- package/lib/propagator/RungeKutta4Propagator.js.map +1 -0
- package/lib/propagator/RungeKutta89Propagator.d.ts +29 -0
- package/lib/propagator/RungeKutta89Propagator.js +130 -0
- package/lib/propagator/RungeKutta89Propagator.js.map +1 -0
- package/lib/propagator/RungeKuttaAdaptive.d.ts +52 -0
- package/lib/propagator/RungeKuttaAdaptive.js +152 -0
- package/lib/propagator/RungeKuttaAdaptive.js.map +1 -0
- package/lib/propagator/Sgp4Propagator.d.ts +35 -0
- package/lib/propagator/Sgp4Propagator.js +55 -0
- package/lib/propagator/Sgp4Propagator.js.map +1 -0
- package/lib/smoothing/ExponentialSmoothing.d.ts +24 -0
- package/lib/smoothing/ExponentialSmoothing.js +82 -0
- package/lib/smoothing/ExponentialSmoothing.js.map +1 -0
- package/lib/types/types.d.ts +68 -262
- package/lib/types/types.js +23 -33
- package/lib/types/types.js.map +1 -1
- package/package.json +28 -42
- package/codecov.yml +0 -21
- package/dist/objects/base-object.d.ts +0 -40
- package/dist/objects/detailed-sat.d.ts +0 -66
- package/dist/objects/index.d.ts +0 -4
- package/dist/objects/sat.d.ts +0 -92
- package/dist/objects/sensor.d.ts +0 -87
- package/dist/objects/star.d.ts +0 -46
- package/dist/ootk.js +0 -2
- package/dist/ootk.js.LICENSE.txt +0 -77
- package/dist/sgp4/Sgp4Assembly.d.ts +0 -5
- package/dist/sgp4/sgp4.d.ts +0 -82
- package/dist/tle/tle-format-data.d.ts +0 -6
- package/dist/tle/tle.d.ts +0 -374
- package/dist/transforms/transforms.d.ts +0 -55
- package/dist/types/types.d.ts +0 -280
- package/dist/utils/constants.d.ts +0 -34
- package/dist/utils/moon-math.d.ts +0 -113
- package/dist/utils/sun-math.d.ts +0 -230
- package/dist/utils/utils.d.ts +0 -39
- package/lib/objects/base-object.d.ts +0 -40
- package/lib/objects/base-object.js +0 -109
- package/lib/objects/base-object.js.map +0 -1
- package/lib/objects/detailed-sat.d.ts +0 -66
- package/lib/objects/detailed-sat.js +0 -149
- package/lib/objects/detailed-sat.js.map +0 -1
- package/lib/objects/sat.d.ts +0 -92
- package/lib/objects/sat.js +0 -188
- package/lib/objects/sat.js.map +0 -1
- package/lib/objects/sensor.d.ts +0 -87
- package/lib/objects/sensor.js +0 -255
- package/lib/objects/sensor.js.map +0 -1
- package/lib/objects/space-object.js +0 -60
- package/lib/objects/space-object.js.map +0 -1
- package/lib/objects/star.d.ts +0 -46
- package/lib/objects/star.js +0 -91
- package/lib/objects/star.js.map +0 -1
- package/lib/sgp4/Sgp4Assembly.d.ts +0 -5
- package/lib/sgp4/Sgp4Assembly.js +0 -75
- package/lib/sgp4/Sgp4Assembly.js.map +0 -1
- package/lib/sgp4/sgp4.d.ts +0 -82
- package/lib/sgp4/sgp4.js +0 -3274
- package/lib/sgp4/sgp4.js.map +0 -1
- package/lib/tle/tle-format-data.d.ts +0 -6
- package/lib/tle/tle-format-data.js +0 -10
- package/lib/tle/tle-format-data.js.map +0 -1
- package/lib/tle/tle.d.ts +0 -374
- package/lib/tle/tle.js +0 -611
- package/lib/tle/tle.js.map +0 -1
- package/lib/transforms/transforms.d.ts +0 -55
- package/lib/transforms/transforms.js +0 -209
- package/lib/transforms/transforms.js.map +0 -1
- package/lib/utils/constants.d.ts +0 -34
- package/lib/utils/constants.js +0 -35
- package/lib/utils/constants.js.map +0 -1
- package/lib/utils/moon-math.d.ts +0 -113
- package/lib/utils/moon-math.js +0 -387
- package/lib/utils/moon-math.js.map +0 -1
- package/lib/utils/sun-math.d.ts +0 -230
- package/lib/utils/sun-math.js +0 -422
- package/lib/utils/sun-math.js.map +0 -1
- package/lib/utils/utils.d.ts +0 -39
- package/lib/utils/utils.js +0 -100
- package/lib/utils/utils.js.map +0 -1
- package/sandbox.html +0 -8
- /package/{LICENSE.MD → LICENSE.md} +0 -0
package/lib/utils/sun-math.js
DELETED
|
@@ -1,422 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Theodore Kruczek.
|
|
3
|
-
* @description Orbital Object ToolKit (OOTK) is a collection of tools for working
|
|
4
|
-
* with satellites and other orbital objects.
|
|
5
|
-
*
|
|
6
|
-
* @file SunMath is a collection of functions for calculating the position of the sun
|
|
7
|
-
* and other stars. This was originally created by Vladimir Agafonkin. Robert Gester's
|
|
8
|
-
* update was referenced for documentation. There were a couple of bugs in both versions
|
|
9
|
-
* so there will be some differences if you are migrating from either to this library.
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* @license AGPL-3.0-or-later
|
|
13
|
-
* @Copyright (c) 2020-2023 Theodore Kruczek
|
|
14
|
-
*
|
|
15
|
-
* @Copyright (c) 2011-2015, Vladimir Agafonkin
|
|
16
|
-
* SunCalc is a JavaScript library for calculating sun/moon position and light phases.
|
|
17
|
-
* https://github.com/mourner/suncalc
|
|
18
|
-
*
|
|
19
|
-
* Reworked and enhanced by Robert Gester
|
|
20
|
-
* @Copyright (c) 2022 Robert Gester
|
|
21
|
-
* https://github.com/hypnos3/suncalc3
|
|
22
|
-
*
|
|
23
|
-
* sun calculations are based on http://aa.quae.nl/en/reken/zonpositie.html formulas
|
|
24
|
-
*
|
|
25
|
-
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
26
|
-
* terms of the GNU Affero General Public License as published by the Free Software
|
|
27
|
-
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
28
|
-
*
|
|
29
|
-
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
30
|
-
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
31
|
-
* See the GNU Affero General Public License for more details.
|
|
32
|
-
*
|
|
33
|
-
* You should have received a copy of the GNU Affero General Public License along with
|
|
34
|
-
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
35
|
-
*/
|
|
36
|
-
import { DEG2RAD, MS_PER_DAY } from './constants';
|
|
37
|
-
var TAU = Math.PI * 2; // https://tauday.com/tau-manifesto
|
|
38
|
-
var SunMath = /** @class */ (function () {
|
|
39
|
-
function SunMath() {
|
|
40
|
-
}
|
|
41
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
42
|
-
SunMath.julianCycle = function (d, lw) {
|
|
43
|
-
var lonOffset = lw / TAU;
|
|
44
|
-
return Math.round(d - SunMath.J0 - lonOffset);
|
|
45
|
-
};
|
|
46
|
-
/**
|
|
47
|
-
* calculates the obderver angle
|
|
48
|
-
* @param {number} alt the observer altitude (in meters) relative to the horizon
|
|
49
|
-
* @returns {Degrees} height for further calculations
|
|
50
|
-
*/
|
|
51
|
-
SunMath.observerAngle = function (alt) {
|
|
52
|
-
return ((-2.076 * Math.sqrt(alt)) / 60);
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* get solar mean anomaly
|
|
56
|
-
* @param {number} d - julian day
|
|
57
|
-
* @returns {number} solar mean anomaly
|
|
58
|
-
*/
|
|
59
|
-
SunMath.solarMeanAnomaly = function (d) {
|
|
60
|
-
return DEG2RAD * (357.5291 + 0.98560028 * d);
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* convert Julian calendar to date object
|
|
64
|
-
* @param {number} julian day number in Julian calendar to convert
|
|
65
|
-
* @return {number} result date as timestamp
|
|
66
|
-
*/
|
|
67
|
-
SunMath.julian2date = function (julian) {
|
|
68
|
-
return new Date((julian - SunMath.J1970) * MS_PER_DAY);
|
|
69
|
-
};
|
|
70
|
-
/**
|
|
71
|
-
* get number of days for a dateValue since 2000
|
|
72
|
-
*
|
|
73
|
-
* See: https://en.wikipedia.org/wiki/Epoch_(astronomy)
|
|
74
|
-
*
|
|
75
|
-
* @param {number} date date as timestamp to get days
|
|
76
|
-
* @return {number} count of days
|
|
77
|
-
*/
|
|
78
|
-
SunMath.date2jSince2000 = function (date) {
|
|
79
|
-
return date.getTime() / MS_PER_DAY + SunMath.J1970 - SunMath.J2000;
|
|
80
|
-
};
|
|
81
|
-
/**
|
|
82
|
-
* get right ascension
|
|
83
|
-
* @param {number} l - ecliptic longitude
|
|
84
|
-
* @param {number} b - ecliptic latitude
|
|
85
|
-
* @returns {number} right ascension
|
|
86
|
-
*/
|
|
87
|
-
SunMath.rightAscension = function (l, b) {
|
|
88
|
-
return Math.atan2(Math.sin(l) * Math.cos(SunMath.e) - Math.tan(b) * Math.sin(SunMath.e), Math.cos(l));
|
|
89
|
-
};
|
|
90
|
-
/**
|
|
91
|
-
* get declination
|
|
92
|
-
* @param {number} l - ecliptic longitude
|
|
93
|
-
* @param {number} b - ecliptic latitude
|
|
94
|
-
* @returns {number} declination
|
|
95
|
-
*/
|
|
96
|
-
SunMath.declination = function (l, b) {
|
|
97
|
-
return Math.asin(Math.sin(b) * Math.cos(SunMath.e) + Math.cos(b) * Math.sin(SunMath.e) * Math.sin(l));
|
|
98
|
-
};
|
|
99
|
-
/**
|
|
100
|
-
* get azimuth
|
|
101
|
-
* @param {number} H - siderealTime
|
|
102
|
-
* @param {Radians} phi - latitude
|
|
103
|
-
* @param {Radians} dec - The declination of the sun
|
|
104
|
-
* @returns {Radians} azimuth in rad
|
|
105
|
-
*/
|
|
106
|
-
SunMath.azimuth = function (H, phi, dec) {
|
|
107
|
-
return (Math.PI + Math.atan2(Math.sin(H), Math.cos(H) * Math.sin(phi) - Math.tan(dec) * Math.cos(phi)));
|
|
108
|
-
};
|
|
109
|
-
/**
|
|
110
|
-
* get elevation (sometimes called altitude)
|
|
111
|
-
* @param {number} H - siderealTime
|
|
112
|
-
* @param {Radians} phi - latitude
|
|
113
|
-
* @param {Radians} dec - The declination of the sun
|
|
114
|
-
* @returns {Radians} elevation
|
|
115
|
-
*/
|
|
116
|
-
SunMath.elevation = function (H, phi, dec) {
|
|
117
|
-
return Math.asin(Math.sin(phi) * Math.sin(dec) + Math.cos(phi) * Math.cos(dec) * Math.cos(H));
|
|
118
|
-
};
|
|
119
|
-
/**
|
|
120
|
-
* side real time
|
|
121
|
-
* @param {number} d - julian day
|
|
122
|
-
* @param {Radians} lw - longitude of the observer
|
|
123
|
-
* @returns {number} sidereal time
|
|
124
|
-
*/
|
|
125
|
-
SunMath.siderealTime = function (d, lw) {
|
|
126
|
-
return DEG2RAD * (280.16 + 360.9856235 * d) - lw;
|
|
127
|
-
};
|
|
128
|
-
/**
|
|
129
|
-
* get astro refraction
|
|
130
|
-
* @param {Radians} h - elevation
|
|
131
|
-
* @returns {number} refraction
|
|
132
|
-
*/
|
|
133
|
-
SunMath.astroRefraction = function (h) {
|
|
134
|
-
if (h < 0) {
|
|
135
|
-
h = 0;
|
|
136
|
-
}
|
|
137
|
-
return (0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179)));
|
|
138
|
-
};
|
|
139
|
-
/**
|
|
140
|
-
* ecliptic longitude
|
|
141
|
-
* @param {number} M - solar mean anomaly
|
|
142
|
-
* @returns {number} ecliptic longitude
|
|
143
|
-
*/
|
|
144
|
-
SunMath.eclipticLongitude = function (M) {
|
|
145
|
-
var C = DEG2RAD * (1.9148 * Math.sin(M) + 0.02 * Math.sin(2 * M) + 0.0003 * Math.sin(3 * M));
|
|
146
|
-
var P = DEG2RAD * 102.9372; // perihelion of Earth
|
|
147
|
-
return (M + C + P + Math.PI); // Sun's mean longitude
|
|
148
|
-
};
|
|
149
|
-
/**
|
|
150
|
-
* ecliptic latitude
|
|
151
|
-
* @param {number} B - ?
|
|
152
|
-
* @returns {number} ecliptic latitude
|
|
153
|
-
*/
|
|
154
|
-
SunMath.eclipticLatitude = function (B) {
|
|
155
|
-
var C = TAU / 360;
|
|
156
|
-
var L = B - 0.00569 - 0.00478 * Math.sin(C * B);
|
|
157
|
-
return TAU * (L + 0.0003 * Math.sin(C * 2 * L));
|
|
158
|
-
};
|
|
159
|
-
/**
|
|
160
|
-
* Julian cycle
|
|
161
|
-
* @param {number} d - number of days
|
|
162
|
-
* @param {number} lw - rad * -lng;
|
|
163
|
-
* @returns {number} julian cycle
|
|
164
|
-
*/
|
|
165
|
-
SunMath.julianCyle = function (d, lw) {
|
|
166
|
-
return Math.round(d - SunMath.J0 - lw / ((2 * TAU) / 2));
|
|
167
|
-
};
|
|
168
|
-
/**
|
|
169
|
-
* approx transit
|
|
170
|
-
* @param {number} Ht - hourAngle
|
|
171
|
-
* @param {number} lw - rad * -lng
|
|
172
|
-
* @param {number} n - Julian cycle
|
|
173
|
-
* @returns {number} approx transit
|
|
174
|
-
*/
|
|
175
|
-
SunMath.approxTransit = function (Ht, lw, n) {
|
|
176
|
-
return SunMath.J0 + (Ht + lw) / TAU + n;
|
|
177
|
-
};
|
|
178
|
-
/**
|
|
179
|
-
* solar transit in Julian
|
|
180
|
-
* @param {number} ds - approxTransit
|
|
181
|
-
* @param {number} M - solar mean anomal
|
|
182
|
-
* @param {number} L - ecliptic longitude
|
|
183
|
-
* @returns {number} solar transit in Julian
|
|
184
|
-
*/
|
|
185
|
-
SunMath.solarTransitJulian = function (ds, M, L) {
|
|
186
|
-
return SunMath.J2000 + ds + 0.0053 * Math.sin(M) - 0.0069 * Math.sin(2 * L);
|
|
187
|
-
};
|
|
188
|
-
/**
|
|
189
|
-
* hour angle
|
|
190
|
-
* @param {number} h - heigh at 0
|
|
191
|
-
* @param {number} phi - rad * lat;
|
|
192
|
-
* @param {number} dec - declination
|
|
193
|
-
* @returns {number} hour angle
|
|
194
|
-
*/
|
|
195
|
-
SunMath.hourAngle = function (h, phi, dec) {
|
|
196
|
-
return Math.acos((Math.sin(h) - Math.sin(phi) * Math.sin(dec)) / (Math.cos(phi) * Math.cos(dec)));
|
|
197
|
-
};
|
|
198
|
-
/**
|
|
199
|
-
* returns set time for the given sun altitude
|
|
200
|
-
* @param {number} h - heigh at 0
|
|
201
|
-
* @param {number} lw - rad * -lng
|
|
202
|
-
* @param {number} phi - rad * lat;
|
|
203
|
-
* @param {number} dec - declination
|
|
204
|
-
* @param {number} n - Julian cycle
|
|
205
|
-
* @param {number} M - solar mean anomal
|
|
206
|
-
* @param {number} L - ecliptic longitude
|
|
207
|
-
* @returns {number} set time
|
|
208
|
-
*/
|
|
209
|
-
SunMath.getSetJulian = function (h, lw, phi, dec, n, M, L) {
|
|
210
|
-
var w = SunMath.hourAngle(h, phi, dec);
|
|
211
|
-
var a = SunMath.approxTransit(w, lw, n);
|
|
212
|
-
return SunMath.solarTransitJulian(a, M, L);
|
|
213
|
-
};
|
|
214
|
-
/**
|
|
215
|
-
* returns set time for the given sun altitude
|
|
216
|
-
* @param {Meters} alt - altitude at 0
|
|
217
|
-
* @param {Radians} lw - -lng
|
|
218
|
-
* @param {Radians} phi - lat;
|
|
219
|
-
* @param {Radians} dec - declination
|
|
220
|
-
* @param {number} n - Julian cycle
|
|
221
|
-
* @param {number} M - solar mean anomal
|
|
222
|
-
* @param {number} L - ecliptic longitude
|
|
223
|
-
* @return {J2000Value} sunset time in days since 2000
|
|
224
|
-
*/
|
|
225
|
-
SunMath.getSetJ = function (alt, lw, phi, dec, n, M, L) {
|
|
226
|
-
var w = SunMath.hourAngle(alt, phi, dec);
|
|
227
|
-
var a = SunMath.approxTransit(w, lw, n);
|
|
228
|
-
return SunMath.solarTransitJulian(a, M, L);
|
|
229
|
-
};
|
|
230
|
-
/**
|
|
231
|
-
* calculates sun times for a given date and latitude/longitude
|
|
232
|
-
* @param {Date|number} dateVal Date object for calculating sun-times
|
|
233
|
-
* @param {number} lat latitude for calculating sun-times
|
|
234
|
-
* @param {number} lon longitude for calculating sun-times
|
|
235
|
-
* @param {number} [alt=0] the observer height (in meters) relative to the horizon
|
|
236
|
-
* @param {boolean} [isUtc=false] defines if the calculation should be in utc or local time (default is local)
|
|
237
|
-
* @return {SunTime} result object of sunTime
|
|
238
|
-
*/
|
|
239
|
-
SunMath.getTimes = function (dateVal, lat, lon, alt, isUtc) {
|
|
240
|
-
if (alt === void 0) { alt = 0; }
|
|
241
|
-
if (isUtc === void 0) { isUtc = false; }
|
|
242
|
-
if (isNaN(lat)) {
|
|
243
|
-
throw new Error('latitude missing');
|
|
244
|
-
}
|
|
245
|
-
if (isNaN(lon)) {
|
|
246
|
-
throw new Error('longitude missing');
|
|
247
|
-
}
|
|
248
|
-
var date = new Date(dateVal);
|
|
249
|
-
if (isUtc) {
|
|
250
|
-
date.setUTCHours(12, 0, 0, 0);
|
|
251
|
-
}
|
|
252
|
-
else {
|
|
253
|
-
date.setHours(12, 0, 0, 0);
|
|
254
|
-
}
|
|
255
|
-
var i = 0;
|
|
256
|
-
var len = 0;
|
|
257
|
-
var time = [];
|
|
258
|
-
var h0 = 0;
|
|
259
|
-
var Jset = 0;
|
|
260
|
-
var Jrise = 0;
|
|
261
|
-
var _a = SunMath.calculateJnoon(lon, lat, alt, date), Jnoon = _a.Jnoon, dh = _a.dh, lw = _a.lw, phi = _a.phi, dec = _a.dec, n = _a.n, M = _a.M, L = _a.L;
|
|
262
|
-
// Determine when the sun is at its highest and lowest (darkest) points.
|
|
263
|
-
var result = {
|
|
264
|
-
solarNoon: SunMath.julian2date(Jnoon),
|
|
265
|
-
nadir: SunMath.julian2date(Jnoon + 0.5), // https://github.com/mourner/suncalc/pull/125
|
|
266
|
-
};
|
|
267
|
-
// Add all other unique times using Jnoon as a reference
|
|
268
|
-
for (i = 0, len = SunMath.times.length; i < len; i += 1) {
|
|
269
|
-
time = SunMath.times[i];
|
|
270
|
-
h0 = ((time[0] + dh) * DEG2RAD);
|
|
271
|
-
Jset = SunMath.getSetJ(h0, lw, phi, dec, n, M, L);
|
|
272
|
-
Jrise = Jnoon - (Jset - Jnoon);
|
|
273
|
-
result[time[1]] = SunMath.julian2date(Jrise);
|
|
274
|
-
result[time[2]] = SunMath.julian2date(Jset);
|
|
275
|
-
}
|
|
276
|
-
return result;
|
|
277
|
-
};
|
|
278
|
-
SunMath.calculateJnoon = function (lon, lat, alt, date) {
|
|
279
|
-
var lw = (DEG2RAD * -lon);
|
|
280
|
-
var phi = (DEG2RAD * lat);
|
|
281
|
-
var dh = SunMath.observerAngle(alt);
|
|
282
|
-
var d = SunMath.date2jSince2000(date);
|
|
283
|
-
var n = SunMath.julianCycle(d, lw);
|
|
284
|
-
var ds = SunMath.approxTransit(0, lw, n);
|
|
285
|
-
var M = SunMath.solarMeanAnomaly(ds);
|
|
286
|
-
var L = SunMath.eclipticLongitude(M);
|
|
287
|
-
var dec = SunMath.declination(L, 0);
|
|
288
|
-
var Jnoon = SunMath.solarTransitJulian(ds, M, L);
|
|
289
|
-
return { Jnoon: Jnoon, dh: dh, lw: lw, phi: phi, dec: dec, n: n, M: M, L: L };
|
|
290
|
-
};
|
|
291
|
-
/**
|
|
292
|
-
* calculates time for a given azimuth angle for a given date and latitude/longitude
|
|
293
|
-
* @param {number|Date} dateValue Date object or timestamp for calculating sun-time
|
|
294
|
-
* @param {Degrees} lat latitude for calculating sun-time
|
|
295
|
-
* @param {Degrees} lon longitude for calculating sun-time
|
|
296
|
-
* @param {Radians | Degrees} az azimuth for calculating sun-time
|
|
297
|
-
* @param {boolean} [isDegrees] true if the az angle is in degree and not in rad
|
|
298
|
-
* @return {Date} result time of sun-time
|
|
299
|
-
*/
|
|
300
|
-
SunMath.getSunTimeByAzimuth = function (dateValue, lat, lon, az, isDegrees) {
|
|
301
|
-
if (isDegrees === void 0) { isDegrees = false; }
|
|
302
|
-
if (isNaN(az)) {
|
|
303
|
-
throw new Error('azimuth missing');
|
|
304
|
-
}
|
|
305
|
-
if (isNaN(lat)) {
|
|
306
|
-
throw new Error('latitude missing');
|
|
307
|
-
}
|
|
308
|
-
if (isNaN(lon)) {
|
|
309
|
-
throw new Error('longitude missing');
|
|
310
|
-
}
|
|
311
|
-
if (isDegrees) {
|
|
312
|
-
az = (az * DEG2RAD);
|
|
313
|
-
}
|
|
314
|
-
var date = new Date(dateValue);
|
|
315
|
-
var lw = (DEG2RAD * -lon);
|
|
316
|
-
var phi = (DEG2RAD * lat);
|
|
317
|
-
var dateVal = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0).getTime();
|
|
318
|
-
var addval = MS_PER_DAY; // / 2);
|
|
319
|
-
dateVal += addval;
|
|
320
|
-
while (addval > 200) {
|
|
321
|
-
// let nazi = this.getPosition(dateVal, lat, lng).azimuth;
|
|
322
|
-
var d = SunMath.date2jSince2000(new Date(dateVal));
|
|
323
|
-
var c = SunMath.getSunRaDec(d);
|
|
324
|
-
var H = SunMath.siderealTime(d, lw) - c.ra;
|
|
325
|
-
var newAz = SunMath.getAzimuth(H, phi, c.dec);
|
|
326
|
-
addval /= 2;
|
|
327
|
-
if (newAz < az) {
|
|
328
|
-
dateVal += addval;
|
|
329
|
-
}
|
|
330
|
-
else {
|
|
331
|
-
dateVal -= addval;
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
return new Date(Math.floor(dateVal));
|
|
335
|
-
};
|
|
336
|
-
/**
|
|
337
|
-
* get azimuth
|
|
338
|
-
* @param {number} H - siderealTime
|
|
339
|
-
* @param {Radians} phi - latitude
|
|
340
|
-
* @param {Radians} dec - The declination of the sun
|
|
341
|
-
* @returns {Radians} azimuth
|
|
342
|
-
*/
|
|
343
|
-
SunMath.getAzimuth = function (H, phi, dec) {
|
|
344
|
-
return Math.atan2(Math.sin(H), Math.cos(H) * Math.sin(phi) - Math.tan(dec) * Math.cos(phi)) + Math.PI;
|
|
345
|
-
};
|
|
346
|
-
/**
|
|
347
|
-
* Convert Date to Solar Date/Time
|
|
348
|
-
*
|
|
349
|
-
* Based on https://www.pveducation.org/pvcdrom/properties-of-sunlight/solar-time
|
|
350
|
-
*
|
|
351
|
-
* See: https://github.com/mourner/suncalc/pull/156
|
|
352
|
-
*
|
|
353
|
-
* @param {date} date - Date to calculate for
|
|
354
|
-
* @param {number} utcOffset - UTC offset in hours
|
|
355
|
-
* @param {Degrees} lon - Longitude in degrees
|
|
356
|
-
* @returns {Date} - Date Object in Solar Time
|
|
357
|
-
*/
|
|
358
|
-
SunMath.getSolarTime = function (date, utcOffset, lon) {
|
|
359
|
-
// calculate the day of year
|
|
360
|
-
var start = new Date();
|
|
361
|
-
start.setUTCFullYear(date.getUTCFullYear(), 0, 1);
|
|
362
|
-
start.setUTCHours(0, 0, 0, 0);
|
|
363
|
-
var diff = date.getTime() - start.getTime();
|
|
364
|
-
var dayOfYear = Math.floor(diff / MS_PER_DAY);
|
|
365
|
-
var b = (360 / 365) * (dayOfYear - 81) * DEG2RAD;
|
|
366
|
-
var equationOfTime = 9.87 * Math.sin(2 * b) - 7.53 * Math.cos(b) - 1.5 * Math.sin(b);
|
|
367
|
-
var localSolarTimeMeridian = 15 * utcOffset;
|
|
368
|
-
var timeCorrection = equationOfTime + 4 * (lon - localSolarTimeMeridian);
|
|
369
|
-
return new Date(date.getTime() + timeCorrection * 60 * 1000);
|
|
370
|
-
};
|
|
371
|
-
SunMath.getStarAzEl = function (date, lat, lon, ra, dec) {
|
|
372
|
-
var lw = (-lon * DEG2RAD);
|
|
373
|
-
var phi = (lat * DEG2RAD);
|
|
374
|
-
var d = SunMath.date2jSince2000(date);
|
|
375
|
-
var H = SunMath.siderealTime(d, lw) - ra;
|
|
376
|
-
var el = SunMath.elevation(H, phi, dec);
|
|
377
|
-
var az = SunMath.azimuth(H, phi, dec);
|
|
378
|
-
el = (el + SunMath.astroRefraction(el)); // elevation correction for refraction
|
|
379
|
-
return {
|
|
380
|
-
az: az,
|
|
381
|
-
el: el,
|
|
382
|
-
};
|
|
383
|
-
};
|
|
384
|
-
SunMath.getSunAzEl = function (date, lat, lon) {
|
|
385
|
-
var lw = (-lon * DEG2RAD);
|
|
386
|
-
var phi = (lat * DEG2RAD);
|
|
387
|
-
var d = SunMath.date2jSince2000(date);
|
|
388
|
-
var c = SunMath.getSunRaDec(d);
|
|
389
|
-
var H = SunMath.siderealTime(d, lw) - c.ra;
|
|
390
|
-
return {
|
|
391
|
-
az: SunMath.azimuth(H, phi, c.dec),
|
|
392
|
-
el: SunMath.elevation(H, phi, c.dec),
|
|
393
|
-
};
|
|
394
|
-
};
|
|
395
|
-
SunMath.getSunRaDec = function (d) {
|
|
396
|
-
var M = SunMath.solarMeanAnomaly(d);
|
|
397
|
-
var L = SunMath.eclipticLongitude(M);
|
|
398
|
-
return {
|
|
399
|
-
dec: SunMath.declination(L, 0),
|
|
400
|
-
ra: SunMath.rightAscension(L, 0),
|
|
401
|
-
};
|
|
402
|
-
};
|
|
403
|
-
SunMath.J1970 = 2440587.5;
|
|
404
|
-
SunMath.J2000 = 2451545;
|
|
405
|
-
SunMath.J0 = 0.0009;
|
|
406
|
-
SunMath.e = DEG2RAD * 23.4397;
|
|
407
|
-
SunMath.times = [
|
|
408
|
-
[6, 'goldenHourDawnEnd', 'goldenHourDuskStart'],
|
|
409
|
-
[-0.3, 'sunriseEnd', 'sunsetStart'],
|
|
410
|
-
[-0.833, 'sunriseStart', 'sunsetEnd'],
|
|
411
|
-
[-1, 'goldenHourDawnStart', 'goldenHourDuskEnd'],
|
|
412
|
-
[-4, 'blueHourDawnEnd', 'blueHourDuskStart'],
|
|
413
|
-
[-6, 'civilDawn', 'civilDusk'],
|
|
414
|
-
[-8, 'blueHourDawnStart', 'blueHourDuskEnd'],
|
|
415
|
-
[-12, 'nauticalDawn', 'nauticalDusk'],
|
|
416
|
-
[-15, 'amateurDawn', 'amateurDusk'],
|
|
417
|
-
[-18, 'astronomicalDawn', 'astronomicalDusk'], // ASTRO_DAWN
|
|
418
|
-
];
|
|
419
|
-
return SunMath;
|
|
420
|
-
}());
|
|
421
|
-
export { SunMath };
|
|
422
|
-
//# sourceMappingURL=sun-math.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sun-math.js","sourceRoot":"","sources":["../../src/utils/sun-math.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/utils.d.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Theodore Kruczek.
|
|
3
|
-
* @description Orbital Object ToolKit (OOTK) is a collection of tools for working
|
|
4
|
-
* with satellites and other orbital objects.
|
|
5
|
-
*
|
|
6
|
-
* @file The Utils module.
|
|
7
|
-
*
|
|
8
|
-
* @license AGPL-3.0-or-later
|
|
9
|
-
* @Copyright (c) 2020-2023 Theodore Kruczek
|
|
10
|
-
*
|
|
11
|
-
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
12
|
-
* terms of the GNU Affero General Public License as published by the Free Software
|
|
13
|
-
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
14
|
-
*
|
|
15
|
-
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
16
|
-
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
17
|
-
* See the GNU Affero General Public License for more details.
|
|
18
|
-
*
|
|
19
|
-
* You should have received a copy of the GNU Affero General Public License along with
|
|
20
|
-
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
-
*/
|
|
22
|
-
import * as Types from '../types/types';
|
|
23
|
-
import { EciVec3, Kilometers } from '../types/types';
|
|
24
|
-
import { MoonMath } from './moon-math';
|
|
25
|
-
import { SunMath } from './sun-math';
|
|
26
|
-
declare class Utils {
|
|
27
|
-
static Types: typeof Types;
|
|
28
|
-
static distance(pos1: EciVec3, pos2: EciVec3): Kilometers;
|
|
29
|
-
private static sign;
|
|
30
|
-
static dopplerFactor(location: EciVec3, position: EciVec3, velocity: EciVec3): Kilometers;
|
|
31
|
-
static createVec(start: number, stop: number, step: number): number[];
|
|
32
|
-
static jday: (year?: number, mon?: number, day?: number, hr?: number, minute?: number, sec?: number) => number;
|
|
33
|
-
static getDayOfYear(date: Date): number;
|
|
34
|
-
private static isLeapYear;
|
|
35
|
-
static roundToNDecimalPlaces(value: number, places: number): number;
|
|
36
|
-
static SunMath: typeof SunMath;
|
|
37
|
-
static MoonMath: typeof MoonMath;
|
|
38
|
-
}
|
|
39
|
-
export { Utils };
|
package/lib/utils/utils.js
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author Theodore Kruczek.
|
|
3
|
-
* @description Orbital Object ToolKit (OOTK) is a collection of tools for working
|
|
4
|
-
* with satellites and other orbital objects.
|
|
5
|
-
*
|
|
6
|
-
* @file The Utils module.
|
|
7
|
-
*
|
|
8
|
-
* @license AGPL-3.0-or-later
|
|
9
|
-
* @Copyright (c) 2020-2023 Theodore Kruczek
|
|
10
|
-
*
|
|
11
|
-
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
12
|
-
* terms of the GNU Affero General Public License as published by the Free Software
|
|
13
|
-
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
14
|
-
*
|
|
15
|
-
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
16
|
-
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
17
|
-
* See the GNU Affero General Public License for more details.
|
|
18
|
-
*
|
|
19
|
-
* You should have received a copy of the GNU Affero General Public License along with
|
|
20
|
-
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
-
*/
|
|
22
|
-
import * as Types from '../types/types';
|
|
23
|
-
import { DAY_TO_MS } from './constants';
|
|
24
|
-
import { MoonMath } from './moon-math';
|
|
25
|
-
import { SunMath } from './sun-math';
|
|
26
|
-
var Utils = /** @class */ (function () {
|
|
27
|
-
function Utils() {
|
|
28
|
-
}
|
|
29
|
-
Utils.distance = function (pos1, pos2) {
|
|
30
|
-
return Math.sqrt(Math.pow((pos1.x - pos2.x), 2) + Math.pow((pos1.y - pos2.y), 2) + Math.pow((pos1.z - pos2.z), 2));
|
|
31
|
-
};
|
|
32
|
-
Utils.dopplerFactor = function (location, position, velocity) {
|
|
33
|
-
var mfactor = 7.292115e-5;
|
|
34
|
-
var c = 299792.458; // Speed of light in km/s
|
|
35
|
-
var range = {
|
|
36
|
-
x: position.x - location.x,
|
|
37
|
-
y: position.y - location.y,
|
|
38
|
-
z: position.z - location.z,
|
|
39
|
-
};
|
|
40
|
-
var distance = Math.sqrt(Math.pow(range.x, 2) + Math.pow(range.y, 2) + Math.pow(range.z, 2));
|
|
41
|
-
var rangeVel = {
|
|
42
|
-
x: velocity.x + mfactor * location.y,
|
|
43
|
-
y: velocity.y - mfactor * location.x,
|
|
44
|
-
z: velocity.z,
|
|
45
|
-
};
|
|
46
|
-
var rangeRate = (range.x * rangeVel.x + range.y * rangeVel.y + range.z * rangeVel.z) / distance;
|
|
47
|
-
return (1 + (rangeRate / c) * Utils.sign(rangeRate));
|
|
48
|
-
};
|
|
49
|
-
Utils.createVec = function (start, stop, step) {
|
|
50
|
-
var array = [];
|
|
51
|
-
for (var i = start; i <= stop; i += step) {
|
|
52
|
-
array.push(i);
|
|
53
|
-
}
|
|
54
|
-
return array;
|
|
55
|
-
};
|
|
56
|
-
Utils.getDayOfYear = function (date) {
|
|
57
|
-
date = date || new Date();
|
|
58
|
-
var dayCount = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
|
|
59
|
-
var mn = date.getMonth();
|
|
60
|
-
var dn = date.getUTCDate();
|
|
61
|
-
var dayOfYear = dayCount[mn] + dn;
|
|
62
|
-
if (mn > 1 && Utils.isLeapYear(date)) {
|
|
63
|
-
dayOfYear++;
|
|
64
|
-
}
|
|
65
|
-
return dayOfYear;
|
|
66
|
-
};
|
|
67
|
-
Utils.isLeapYear = function (dateIn) {
|
|
68
|
-
var year = dateIn.getUTCFullYear();
|
|
69
|
-
// eslint-disable-next-line no-bitwise
|
|
70
|
-
if ((year & 3) !== 0) {
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
return year % 100 !== 0 || year % 400 === 0;
|
|
74
|
-
};
|
|
75
|
-
Utils.roundToNDecimalPlaces = function (value, places) {
|
|
76
|
-
return Math.round(value * Math.pow(10, places)) / Math.pow(10, places);
|
|
77
|
-
};
|
|
78
|
-
Utils.Types = Types;
|
|
79
|
-
Utils.sign = function (value) { return (value >= 0 ? 1 : -1); };
|
|
80
|
-
// eslint-disable-next-line max-params
|
|
81
|
-
Utils.jday = function (year, mon, day, hr, minute, sec) {
|
|
82
|
-
if (!year) {
|
|
83
|
-
var now = new Date();
|
|
84
|
-
var jDayStart = new Date(now.getUTCFullYear(), 0, 0);
|
|
85
|
-
var jDayDiff = now.getDate() - jDayStart.getDate();
|
|
86
|
-
return Math.floor(jDayDiff / DAY_TO_MS);
|
|
87
|
-
}
|
|
88
|
-
return (367.0 * year -
|
|
89
|
-
Math.floor(7 * (year + Math.floor((mon + 9) / 12.0)) * 0.25) +
|
|
90
|
-
Math.floor((275 * mon) / 9.0) +
|
|
91
|
-
day +
|
|
92
|
-
1721013.5 +
|
|
93
|
-
((sec / 60.0 + minute) / 60.0 + hr) / 24.0);
|
|
94
|
-
};
|
|
95
|
-
Utils.SunMath = SunMath;
|
|
96
|
-
Utils.MoonMath = MoonMath;
|
|
97
|
-
return Utils;
|
|
98
|
-
}());
|
|
99
|
-
export { Utils };
|
|
100
|
-
//# sourceMappingURL=utils.js.map
|
package/lib/utils/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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"}
|
package/sandbox.html
DELETED
|
File without changes
|