Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Added GetLunarTrueEclipticLongitude(). #69

Merged
merged 3 commits into from
Mar 8, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
167 changes: 84 additions & 83 deletions coverage.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,5 @@
mode: atomic
github.com/observerly/dusk/pkg/dusk/twilight.go:38.163,49.16 5 9
github.com/observerly/dusk/pkg/dusk/twilight.go:53.2,57.18 1 9
github.com/observerly/dusk/pkg/dusk/twilight.go:49.16,51.3 1 0
github.com/observerly/dusk/pkg/dusk/twilight.go:69.139,74.2 2 3
github.com/observerly/dusk/pkg/dusk/twilight.go:85.142,90.2 2 3
github.com/observerly/dusk/pkg/dusk/twilight.go:101.146,106.2 2 3
github.com/observerly/dusk/pkg/dusk/astrometry.go:12.52,16.12 2 1444
github.com/observerly/dusk/pkg/dusk/astrometry.go:20.2,20.11 1 1444
github.com/observerly/dusk/pkg/dusk/astrometry.go:16.12,18.3 1 364
github.com/observerly/dusk/pkg/dusk/coordinates.go:52.108,71.12 10 1442
github.com/observerly/dusk/pkg/dusk/coordinates.go:75.2,78.3 1 1442
github.com/observerly/dusk/pkg/dusk/coordinates.go:71.12,73.3 1 520
github.com/observerly/dusk/pkg/dusk/coordinates.go:91.149,106.2 6 1442
github.com/observerly/dusk/pkg/dusk/epoch.go:31.48,36.2 2 4417
github.com/observerly/dusk/pkg/dusk/epoch.go:31.48,36.2 2 4421
github.com/observerly/dusk/pkg/dusk/epoch.go:43.45,45.2 1 70
github.com/observerly/dusk/pkg/dusk/epoch.go:53.60,65.13 6 1446
github.com/observerly/dusk/pkg/dusk/epoch.go:69.2,81.13 5 1446
Expand All @@ -23,7 +10,7 @@ github.com/observerly/dusk/pkg/dusk/epoch.go:94.74,102.11 4 1445
github.com/observerly/dusk/pkg/dusk/epoch.go:106.2,106.17 1 1445
github.com/observerly/dusk/pkg/dusk/epoch.go:102.11,104.3 1 0
github.com/observerly/dusk/pkg/dusk/epoch.go:115.65,126.2 4 32
github.com/observerly/dusk/pkg/dusk/epoch.go:134.76,142.2 3 23
github.com/observerly/dusk/pkg/dusk/epoch.go:134.76,142.2 3 27
github.com/observerly/dusk/pkg/dusk/epoch.go:150.73,158.2 3 2908
github.com/observerly/dusk/pkg/dusk/epoch.go:167.62,178.2 3 6
github.com/observerly/dusk/pkg/dusk/epoch.go:186.73,201.12 6 4
Expand All @@ -33,77 +20,62 @@ github.com/observerly/dusk/pkg/dusk/epoch.go:214.77,236.12 10 3
github.com/observerly/dusk/pkg/dusk/epoch.go:240.2,240.11 1 3
github.com/observerly/dusk/pkg/dusk/epoch.go:236.12,238.3 1 0
github.com/observerly/dusk/pkg/dusk/epoch.go:250.70,255.2 2 30
github.com/observerly/dusk/pkg/dusk/lawrence.go:14.62,27.11 5 4
github.com/observerly/dusk/pkg/dusk/lawrence.go:31.2,31.10 1 4
github.com/observerly/dusk/pkg/dusk/lawrence.go:27.11,29.3 1 4
github.com/observerly/dusk/pkg/dusk/lawrence.go:40.62,54.2 5 9
github.com/observerly/dusk/pkg/dusk/lawrence.go:62.58,70.2 3 6
github.com/observerly/dusk/pkg/dusk/lawrence.go:80.70,88.14 3 5
github.com/observerly/dusk/pkg/dusk/lawrence.go:92.2,92.11 1 5
github.com/observerly/dusk/pkg/dusk/lawrence.go:88.14,90.3 1 0
github.com/observerly/dusk/pkg/dusk/trigonometry.go:10.30,12.2 1 114449
github.com/observerly/dusk/pkg/dusk/trigonometry.go:14.30,16.2 1 18836
github.com/observerly/dusk/pkg/dusk/trigonometry.go:18.44,20.2 1 86701
github.com/observerly/dusk/pkg/dusk/trigonometry.go:22.30,24.2 1 1447
github.com/observerly/dusk/pkg/dusk/trigonometry.go:26.31,28.2 1 2916
github.com/observerly/dusk/pkg/dusk/trigonometry.go:30.31,32.2 1 1468
github.com/observerly/dusk/pkg/dusk/trigonometry.go:34.31,36.2 1 1443
github.com/observerly/dusk/pkg/dusk/trigonometry.go:38.36,40.2 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:17.47,22.11 2 2900
github.com/observerly/dusk/pkg/dusk/lunar.go:26.2,26.10 1 2900
github.com/observerly/dusk/pkg/dusk/lunar.go:22.11,24.3 1 16
github.com/observerly/dusk/pkg/dusk/lunar.go:35.64,46.2 4 8
github.com/observerly/dusk/pkg/dusk/lunar.go:54.82,65.12 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:69.2,69.11 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:65.12,67.3 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:79.48,84.11 2 1446
github.com/observerly/dusk/pkg/dusk/lunar.go:88.2,88.10 1 1446
github.com/observerly/dusk/pkg/dusk/lunar.go:84.11,86.3 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:98.45,103.11 2 1451
github.com/observerly/dusk/pkg/dusk/lunar.go:107.2,107.10 1 1451
github.com/observerly/dusk/pkg/dusk/lunar.go:103.11,105.3 1 7
github.com/observerly/dusk/pkg/dusk/lunar.go:110.54,131.2 10 1
github.com/observerly/dusk/pkg/dusk/lunar.go:140.52,145.11 2 1451
github.com/observerly/dusk/pkg/dusk/lunar.go:149.2,149.10 1 1451
github.com/observerly/dusk/pkg/dusk/lunar.go:145.11,147.3 1 7
github.com/observerly/dusk/pkg/dusk/lunar.go:159.64,164.11 2 5
github.com/observerly/dusk/pkg/dusk/lunar.go:168.2,168.10 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:164.11,166.3 1 0
github.com/observerly/dusk/pkg/dusk/lunar.go:177.52,182.11 2 5
github.com/observerly/dusk/pkg/dusk/lunar.go:186.2,186.10 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:182.11,184.3 1 2
github.com/observerly/dusk/pkg/dusk/lunar.go:196.61,201.12 2 1450
github.com/observerly/dusk/pkg/dusk/lunar.go:205.2,205.11 1 1450
github.com/observerly/dusk/pkg/dusk/lunar.go:201.12,203.3 1 1440
github.com/observerly/dusk/pkg/dusk/lunar.go:217.76,219.2 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:230.76,232.2 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:240.61,245.2 2 3
github.com/observerly/dusk/pkg/dusk/lunar.go:255.79,260.2 2 3
github.com/observerly/dusk/pkg/dusk/lunar.go:271.94,276.2 2 2
github.com/observerly/dusk/pkg/dusk/lunar.go:284.74,309.2 10 4
github.com/observerly/dusk/pkg/dusk/lunar.go:319.70,348.20 15 1445
github.com/observerly/dusk/pkg/dusk/lunar.go:366.2,366.20 1 1445
github.com/observerly/dusk/pkg/dusk/lunar.go:381.2,385.3 1 1445
github.com/observerly/dusk/pkg/dusk/lunar.go:348.20,353.14 3 86700
github.com/observerly/dusk/pkg/dusk/lunar.go:354.10,356.21 2 46240
github.com/observerly/dusk/pkg/dusk/lunar.go:357.14,359.25 2 31790
github.com/observerly/dusk/pkg/dusk/lunar.go:360.14,362.26 2 8670
github.com/observerly/dusk/pkg/dusk/lunar.go:366.20,371.14 3 86700
github.com/observerly/dusk/pkg/dusk/lunar.go:372.10,373.21 1 49130
github.com/observerly/dusk/pkg/dusk/lunar.go:374.14,375.25 1 34680
github.com/observerly/dusk/pkg/dusk/lunar.go:376.14,377.26 1 2890
github.com/observerly/dusk/pkg/dusk/lunar.go:557.53,559.2 1 2
github.com/observerly/dusk/pkg/dusk/lunar.go:574.93,584.2 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:596.103,605.11 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:610.2,610.11 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:615.2,615.14 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:605.11,607.3 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:610.11,612.3 1 0
github.com/observerly/dusk/pkg/dusk/lunar.go:626.139,635.16 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:639.2,641.39 2 1
github.com/observerly/dusk/pkg/dusk/lunar.go:658.2,658.35 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:635.16,637.3 1 0
github.com/observerly/dusk/pkg/dusk/lunar.go:641.39,656.3 5 1440
github.com/observerly/dusk/pkg/dusk/lunar.go:35.64,46.2 4 10
github.com/observerly/dusk/pkg/dusk/lunar.go:54.64,82.2 12 1
github.com/observerly/dusk/pkg/dusk/lunar.go:90.82,101.12 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:105.2,105.11 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:101.12,103.3 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:115.48,120.11 2 1446
github.com/observerly/dusk/pkg/dusk/lunar.go:124.2,124.10 1 1446
github.com/observerly/dusk/pkg/dusk/lunar.go:120.11,122.3 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:134.45,139.11 2 1451
github.com/observerly/dusk/pkg/dusk/lunar.go:143.2,143.10 1 1451
github.com/observerly/dusk/pkg/dusk/lunar.go:139.11,141.3 1 7
github.com/observerly/dusk/pkg/dusk/lunar.go:152.54,173.2 10 1
github.com/observerly/dusk/pkg/dusk/lunar.go:182.52,187.11 2 1451
github.com/observerly/dusk/pkg/dusk/lunar.go:191.2,191.10 1 1451
github.com/observerly/dusk/pkg/dusk/lunar.go:187.11,189.3 1 7
github.com/observerly/dusk/pkg/dusk/lunar.go:201.64,206.11 2 5
github.com/observerly/dusk/pkg/dusk/lunar.go:210.2,210.10 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:206.11,208.3 1 0
github.com/observerly/dusk/pkg/dusk/lunar.go:219.52,224.11 2 5
github.com/observerly/dusk/pkg/dusk/lunar.go:228.2,228.10 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:224.11,226.3 1 2
github.com/observerly/dusk/pkg/dusk/lunar.go:238.61,243.12 2 1450
github.com/observerly/dusk/pkg/dusk/lunar.go:247.2,247.11 1 1450
github.com/observerly/dusk/pkg/dusk/lunar.go:243.12,245.3 1 1440
github.com/observerly/dusk/pkg/dusk/lunar.go:259.76,261.2 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:272.76,274.2 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:282.61,287.2 2 4
github.com/observerly/dusk/pkg/dusk/lunar.go:297.79,302.2 2 4
github.com/observerly/dusk/pkg/dusk/lunar.go:313.94,318.2 2 3
github.com/observerly/dusk/pkg/dusk/lunar.go:326.74,351.2 10 4
github.com/observerly/dusk/pkg/dusk/lunar.go:361.70,390.20 15 1445
github.com/observerly/dusk/pkg/dusk/lunar.go:408.2,408.20 1 1445
github.com/observerly/dusk/pkg/dusk/lunar.go:423.2,427.3 1 1445
github.com/observerly/dusk/pkg/dusk/lunar.go:390.20,395.14 3 86700
github.com/observerly/dusk/pkg/dusk/lunar.go:396.10,398.21 2 46240
github.com/observerly/dusk/pkg/dusk/lunar.go:399.14,401.25 2 31790
github.com/observerly/dusk/pkg/dusk/lunar.go:402.14,404.26 2 8670
github.com/observerly/dusk/pkg/dusk/lunar.go:408.20,413.14 3 86700
github.com/observerly/dusk/pkg/dusk/lunar.go:414.10,415.21 1 49130
github.com/observerly/dusk/pkg/dusk/lunar.go:416.14,417.25 1 34680
github.com/observerly/dusk/pkg/dusk/lunar.go:418.14,419.26 1 2890
github.com/observerly/dusk/pkg/dusk/lunar.go:599.53,601.2 1 2
github.com/observerly/dusk/pkg/dusk/lunar.go:616.93,626.2 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:638.103,647.11 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:652.2,652.11 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:657.2,657.14 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:647.11,649.3 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:652.11,654.3 1 0
github.com/observerly/dusk/pkg/dusk/lunar.go:668.139,677.16 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:681.2,683.39 2 1
github.com/observerly/dusk/pkg/dusk/lunar.go:700.2,700.35 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:677.16,679.3 1 0
github.com/observerly/dusk/pkg/dusk/lunar.go:683.39,698.3 5 1440
github.com/observerly/dusk/pkg/dusk/solar.go:21.45,24.2 1 1474
github.com/observerly/dusk/pkg/dusk/solar.go:33.50,36.2 1 28
github.com/observerly/dusk/pkg/dusk/solar.go:45.62,48.2 1 27
Expand All @@ -114,9 +86,38 @@ github.com/observerly/dusk/pkg/dusk/solar.go:90.2,90.10 1 1450
github.com/observerly/dusk/pkg/dusk/solar.go:86.11,88.3 1 10
github.com/observerly/dusk/pkg/dusk/solar.go:106.110,112.2 2 24
github.com/observerly/dusk/pkg/dusk/solar.go:123.142,151.2 12 23
github.com/observerly/dusk/pkg/dusk/twilight.go:38.163,49.16 5 9
github.com/observerly/dusk/pkg/dusk/twilight.go:53.2,57.18 1 9
github.com/observerly/dusk/pkg/dusk/twilight.go:49.16,51.3 1 0
github.com/observerly/dusk/pkg/dusk/twilight.go:69.139,74.2 2 3
github.com/observerly/dusk/pkg/dusk/twilight.go:85.142,90.2 2 3
github.com/observerly/dusk/pkg/dusk/twilight.go:101.146,106.2 2 3
github.com/observerly/dusk/pkg/dusk/utils.go:15.34,17.2 1 5
github.com/observerly/dusk/pkg/dusk/utils.go:26.55,31.12 2 1446
github.com/observerly/dusk/pkg/dusk/utils.go:35.2,35.11 1 1446
github.com/observerly/dusk/pkg/dusk/utils.go:31.12,33.3 1 0
github.com/observerly/dusk/pkg/dusk/utils.go:47.84,49.2 1 4
github.com/observerly/dusk/pkg/dusk/utils.go:60.84,62.2 1 1446
github.com/observerly/dusk/pkg/dusk/astrometry.go:12.52,16.12 2 1444
github.com/observerly/dusk/pkg/dusk/astrometry.go:20.2,20.11 1 1444
github.com/observerly/dusk/pkg/dusk/astrometry.go:16.12,18.3 1 364
github.com/observerly/dusk/pkg/dusk/lawrence.go:14.62,27.11 5 5
github.com/observerly/dusk/pkg/dusk/lawrence.go:31.2,31.10 1 5
github.com/observerly/dusk/pkg/dusk/lawrence.go:27.11,29.3 1 5
github.com/observerly/dusk/pkg/dusk/lawrence.go:40.62,54.2 5 10
github.com/observerly/dusk/pkg/dusk/lawrence.go:62.58,70.2 3 7
github.com/observerly/dusk/pkg/dusk/lawrence.go:80.70,88.14 3 6
github.com/observerly/dusk/pkg/dusk/lawrence.go:92.2,92.11 1 6
github.com/observerly/dusk/pkg/dusk/lawrence.go:88.14,90.3 1 0
github.com/observerly/dusk/pkg/dusk/trigonometry.go:10.30,12.2 1 114456
github.com/observerly/dusk/pkg/dusk/trigonometry.go:14.30,16.2 1 18836
github.com/observerly/dusk/pkg/dusk/trigonometry.go:18.44,20.2 1 86701
github.com/observerly/dusk/pkg/dusk/trigonometry.go:22.30,24.2 1 1447
github.com/observerly/dusk/pkg/dusk/trigonometry.go:26.31,28.2 1 2916
github.com/observerly/dusk/pkg/dusk/trigonometry.go:30.31,32.2 1 1468
github.com/observerly/dusk/pkg/dusk/trigonometry.go:34.31,36.2 1 1443
github.com/observerly/dusk/pkg/dusk/trigonometry.go:38.36,40.2 1 5
github.com/observerly/dusk/pkg/dusk/coordinates.go:52.108,71.12 10 1442
github.com/observerly/dusk/pkg/dusk/coordinates.go:75.2,78.3 1 1442
github.com/observerly/dusk/pkg/dusk/coordinates.go:71.12,73.3 1 520
github.com/observerly/dusk/pkg/dusk/coordinates.go:91.149,106.2 6 1442
36 changes: 36 additions & 0 deletions pkg/dusk/lunar.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,42 @@ func GetLunarMeanEclipticLongitude(datetime time.Time) float64 {
return λ
}

/*
GetLunarTrueEclipticLongitude()

@returns the true corrected lunar ecliptic longitude as measured from the moment of perigee
@see p.165 of Lawrence, J.L. 2015. Celestial Calculations - A Gentle Introduction To Computational Astronomy. Cambridge, Ma: The MIT Press
*/
func GetLunarTrueEclipticLongitude(datetime time.Time) float64 {
var M float64 = GetLunarMeanAnomalyLawrence(datetime)

var λ float64 = GetLunarMeanEclipticLongitude(datetime)

var Msol = GetSolarMeanAnomalyLawrence(datetime)

var Csol = GetSolarEquationOfCenterLawrence(Msol)

var λsol float64 = GetSolarEclipticLongitudeLawrence(Msol, Csol)

var Ae float64 = GetLunarAnnualEquationCorrection(M)

var Eν float64 = GetLunarEvectionCorrection(M, λ, λsol)

var Ca float64 = GetLunarMeanAnomalyCorrection(M, Msol, Ae, Eν)

// TO-DO: Refactor GetLunarTrueAnomaly() to accept Ca
// eq. 7.3.7 p.165 of Lawrence, J.L. 2015. Celestial Calculations. Cambridge, Ma: The MIT Press
var ν float64 = 6.2886*sinx(Ca) + 0.214*sinx(2*Ca)

// eq 7.3.9 p.165 of Lawrence, J.L. 2015. Celestial Calculations. Cambridge, Ma: The MIT Press
var λcorr float64 = math.Mod(λ+Eν+ν-Ae, 360)

// eq 7.3.8 p.165 of Lawrence, J.L. 2015. Celestial Calculations. Cambridge, Ma: The MIT Press
var V = 0.6583 * sinx(2*(λcorr-λsol))

return λcorr + V
}

/*
GetLunarMeanEclipticLongitudeOfTheAscendingNode()

Expand Down
13 changes: 13 additions & 0 deletions pkg/dusk/lunar_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,19 @@ func TestGetLunarMeanEclipticLongitude(t *testing.T) {
}
}

func TestGetLunarTrueEclipticLongitude(t *testing.T) {
// Date of observation:
var datetime time.Time = time.Date(2015, 1, 2, 3, 0, 0, 0, time.UTC)

var got = GetLunarTrueEclipticLongitude(datetime)

var want = 64.972240

if math.Abs(got-want) > 0.00001 {
t.Errorf("got %f, wanted %f", got, want)
}
}

func TestGetLunarMeanEclipticLongitudeOfTheAscendingNode(t *testing.T) {
// Date of observation:
var datetime time.Time = time.Date(2015, 1, 2, 3, 0, 0, 0, time.UTC)
Expand Down