-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathAstro.Rise.test.js
84 lines (54 loc) · 2.88 KB
/
Astro.Rise.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// Copyright (c) 2016 Fabio Soldati, www.peakfinder.org
// License MIT: http://www.opensource.org/licenses/MIT
QUnit.test( "astro.rise approxtimes venus", function( assert ) {
var jd = A.JulianDay.calendarGregorianToJD(1988, 3, 20);
var jdo = new A.JulianDay(jd);
var eclcoord = new A.EclCoord(
A.Coord.calcAngle(false, 42, 20, 0), // latitude of observer on Earth
A.Coord.calcAngle(false, 71, 5, 0)); // longitude of observer on Earth
var h0 = A.Rise.stdh0Stellar;
// Meeus gives us the value of 11h 50m 58.1s but we have a package
// function for this:
var Th0 = A.Sidereal.apparent0UT(jdo);
assert.close(Th0, A.JulianDay.secondsFromHMS(11,50,58.0930), 0.0001);
var eqcoord = new A.EqCoord(
A.Coord.calcRA(2, 46, 55.51), // right ascension
A.Coord.calcAngle(false, 18, 26, 27.3)); // declination
var at = A.Rise.approxTimes(eclcoord, h0, Th0, eqcoord);
assert.close(A.Math.pMod(at.rise, 86400), A.JulianDay.secondsFromHMS(12, 26, 9)/*0.51816*/, 1);
assert.close(A.Math.pMod(at.transit, 86400), A.JulianDay.secondsFromHMS(19, 40, 17)/*0.81965*/, 1);
assert.close(A.Math.pMod(at.set, 86400), A.JulianDay.secondsFromHMS(2, 54, 25)/*0.12113*/, 1);
});
QUnit.test( "astro.rise times venus", function( assert ) {
var jd = A.JulianDay.calendarGregorianToJD(1988, 3, 20);
var jdo = new A.JulianDay(jd);
var eclcoord = new A.EclCoord(
A.Coord.calcAngle(false, 42, 20, 0), // latitude of observer on Earth
A.Coord.calcAngle(false, 71, 5, 0)); // longitude of observer on Earth
var h0 = A.Rise.stdh0Stellar;
// Meeus gives us the value of 11h 50m 58.1s but we have a package
// function for this:
var Th0 = A.Sidereal.apparent0UT(jdo);
assert.close(Th0, A.JulianDay.secondsFromHMS(11, 50, 58.0930), 0.0001);
// Venus
var eqcoord3 = [
new A.EqCoord(A.Coord.calcRA(2, 42, 43.25), A.Coord.calcAngle(false, 18, 02, 51.4)),
new A.EqCoord(A.Coord.calcRA(2, 46, 55.51), A.Coord.calcAngle(false, 18, 26, 27.3)),
new A.EqCoord(A.Coord.calcRA(2, 51, 7.69), A.Coord.calcAngle(false, 18, 49, 38.7))
];
var at = A.Rise.times(eclcoord, jdo.deltaT, h0, Th0, eqcoord3);
assert.close(A.Math.pMod(at.rise, 86400), A.JulianDay.secondsFromHMS(12, 25, 25)/*0.51816*/, 1);
assert.close(A.Math.pMod(at.transit, 86400), A.JulianDay.secondsFromHMS(19, 40, 30)/*0.81965*/, 1);
assert.close(A.Math.pMod(at.set, 86400), A.JulianDay.secondsFromHMS(2, 54, 39)/*0.12113*/, 1);
});
QUnit.test( "astro.rise stdh0", function( assert ) {
assert.close(A.Rise.stdh0Stellar*180/Math.PI, -0.5667, 0.0001);
assert.close(A.Rise.stdh0LunarMean*180/Math.PI, 0.125, 0.001);
function testmoon(delta, stdh0) {
var pi = Math.asin(6378.14 / delta);
assert.close(A.Rise.stdh0Lunar(pi)*180/Math.PI, stdh0, 0.001);
}
testmoon(359861, 0.172); // min from https://www.fourmilab.ch/earthview/moon_ap_per.html
testmoon(405948, 0.088); // max
testmoon(359861 + (405948-359861)/2, 0.127); // mean
});