Skip to content

Commit

Permalink
Merge pull request #56 from observerly/feature/dusk/GetLunarHorizonta…
Browse files Browse the repository at this point in the history
…lCoordinatesForDay

feat: Added GetLunarHorizontalCoordinatesForDay().
  • Loading branch information
michealroberts authored Feb 22, 2022
2 parents 527c263 + d6e4ff9 commit 511fde4
Show file tree
Hide file tree
Showing 3 changed files with 139 additions and 79 deletions.
163 changes: 84 additions & 79 deletions coverage.txt
Original file line number Diff line number Diff line change
@@ -1,43 +1,16 @@
mode: atomic
github.com/observerly/dusk/pkg/dusk/trigonometry.go:10.30,12.2 1 673
github.com/observerly/dusk/pkg/dusk/trigonometry.go:14.30,16.2 1 116
github.com/observerly/dusk/pkg/dusk/trigonometry.go:18.44,20.2 1 301
github.com/observerly/dusk/pkg/dusk/trigonometry.go:22.30,24.2 1 7
github.com/observerly/dusk/pkg/dusk/trigonometry.go:26.31,28.2 1 36
github.com/observerly/dusk/pkg/dusk/trigonometry.go:30.31,32.2 1 28
github.com/observerly/dusk/pkg/dusk/trigonometry.go:34.31,36.2 1 3
github.com/observerly/dusk/pkg/dusk/trigonometry.go:38.36,40.2 1 5
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 6
github.com/observerly/dusk/pkg/dusk/utils.go:35.2,35.11 1 6
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 6
github.com/observerly/dusk/pkg/dusk/astrometry.go:12.52,16.12 2 4
github.com/observerly/dusk/pkg/dusk/astrometry.go:20.2,20.11 1 4
github.com/observerly/dusk/pkg/dusk/astrometry.go:16.12,18.3 1 4
github.com/observerly/dusk/pkg/dusk/coordinates.go:37.108,56.12 10 2
github.com/observerly/dusk/pkg/dusk/coordinates.go:60.2,63.3 1 2
github.com/observerly/dusk/pkg/dusk/coordinates.go:56.12,58.3 1 2
github.com/observerly/dusk/pkg/dusk/coordinates.go:76.148,91.2 6 2
github.com/observerly/dusk/pkg/dusk/epoch.go:31.48,36.2 2 73
github.com/observerly/dusk/pkg/dusk/epoch.go:31.48,36.2 2 4393
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 6
github.com/observerly/dusk/pkg/dusk/epoch.go:69.2,81.13 5 6
github.com/observerly/dusk/pkg/dusk/epoch.go:85.2,85.12 1 6
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
github.com/observerly/dusk/pkg/dusk/epoch.go:85.2,85.12 1 1446
github.com/observerly/dusk/pkg/dusk/epoch.go:65.13,67.3 1 1
github.com/observerly/dusk/pkg/dusk/epoch.go:81.13,83.3 1 1
github.com/observerly/dusk/pkg/dusk/epoch.go:94.74,102.11 4 5
github.com/observerly/dusk/pkg/dusk/epoch.go:106.2,106.17 1 5
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 31
github.com/observerly/dusk/pkg/dusk/epoch.go:134.73,142.2 3 28
github.com/observerly/dusk/pkg/dusk/epoch.go:134.73,142.2 3 2908
github.com/observerly/dusk/pkg/dusk/epoch.go:151.62,162.2 3 6
github.com/observerly/dusk/pkg/dusk/epoch.go:170.73,185.12 6 4
github.com/observerly/dusk/pkg/dusk/epoch.go:189.2,189.11 1 4
Expand All @@ -46,55 +19,87 @@ github.com/observerly/dusk/pkg/dusk/epoch.go:198.77,220.12 10 3
github.com/observerly/dusk/pkg/dusk/epoch.go:224.2,224.11 1 3
github.com/observerly/dusk/pkg/dusk/epoch.go:220.12,222.3 1 0
github.com/observerly/dusk/pkg/dusk/epoch.go:234.70,239.2 2 30
github.com/observerly/dusk/pkg/dusk/lunar.go:15.47,20.11 2 20
github.com/observerly/dusk/pkg/dusk/lunar.go:24.2,24.10 1 20
github.com/observerly/dusk/pkg/dusk/lunar.go:20.11,22.3 1 16
github.com/observerly/dusk/pkg/dusk/lunar.go:34.48,39.11 2 6
github.com/observerly/dusk/pkg/dusk/lunar.go:43.2,43.10 1 6
github.com/observerly/dusk/pkg/dusk/lunar.go:39.11,41.3 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:53.45,58.11 2 11
github.com/observerly/dusk/pkg/dusk/lunar.go:62.2,62.10 1 11
github.com/observerly/dusk/pkg/dusk/lunar.go:58.11,60.3 1 7
github.com/observerly/dusk/pkg/dusk/lunar.go:72.52,77.11 2 11
github.com/observerly/dusk/pkg/dusk/lunar.go:81.2,81.10 1 11
github.com/observerly/dusk/pkg/dusk/lunar.go:77.11,79.3 1 7
github.com/observerly/dusk/pkg/dusk/lunar.go:91.64,96.11 2 5
github.com/observerly/dusk/pkg/dusk/lunar.go:100.2,100.10 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:96.11,98.3 1 0
github.com/observerly/dusk/pkg/dusk/lunar.go:109.52,114.11 2 5
github.com/observerly/dusk/pkg/dusk/lunar.go:118.2,118.10 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:114.11,116.3 1 2
github.com/observerly/dusk/pkg/dusk/lunar.go:128.61,133.12 2 10
github.com/observerly/dusk/pkg/dusk/lunar.go:137.2,137.11 1 10
github.com/observerly/dusk/pkg/dusk/lunar.go:133.12,135.3 1 0
github.com/observerly/dusk/pkg/dusk/lunar.go:149.76,151.2 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:162.76,164.2 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:172.74,197.2 10 4
github.com/observerly/dusk/pkg/dusk/lunar.go:207.70,236.20 15 5
github.com/observerly/dusk/pkg/dusk/lunar.go:254.2,254.20 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:269.2,273.3 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:236.20,241.14 3 300
github.com/observerly/dusk/pkg/dusk/lunar.go:242.10,244.21 2 160
github.com/observerly/dusk/pkg/dusk/lunar.go:245.14,247.25 2 110
github.com/observerly/dusk/pkg/dusk/lunar.go:248.14,250.26 2 30
github.com/observerly/dusk/pkg/dusk/lunar.go:254.20,259.14 3 300
github.com/observerly/dusk/pkg/dusk/lunar.go:260.10,261.21 1 170
github.com/observerly/dusk/pkg/dusk/lunar.go:262.14,263.25 1 120
github.com/observerly/dusk/pkg/dusk/lunar.go:264.14,265.26 1 10
github.com/observerly/dusk/pkg/dusk/lunar.go:445.53,447.2 1 2
github.com/observerly/dusk/pkg/dusk/lunar.go:462.93,472.2 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:484.103,493.11 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:498.2,498.11 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:503.2,503.14 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:493.11,495.3 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:498.11,500.3 1 0
github.com/observerly/dusk/pkg/dusk/solar.go:21.45,24.2 1 34
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:36.48,41.11 2 1446
github.com/observerly/dusk/pkg/dusk/lunar.go:45.2,45.10 1 1446
github.com/observerly/dusk/pkg/dusk/lunar.go:41.11,43.3 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:55.45,60.11 2 1451
github.com/observerly/dusk/pkg/dusk/lunar.go:64.2,64.10 1 1451
github.com/observerly/dusk/pkg/dusk/lunar.go:60.11,62.3 1 7
github.com/observerly/dusk/pkg/dusk/lunar.go:74.52,79.11 2 1451
github.com/observerly/dusk/pkg/dusk/lunar.go:83.2,83.10 1 1451
github.com/observerly/dusk/pkg/dusk/lunar.go:79.11,81.3 1 7
github.com/observerly/dusk/pkg/dusk/lunar.go:93.64,98.11 2 5
github.com/observerly/dusk/pkg/dusk/lunar.go:102.2,102.10 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:98.11,100.3 1 0
github.com/observerly/dusk/pkg/dusk/lunar.go:111.52,116.11 2 5
github.com/observerly/dusk/pkg/dusk/lunar.go:120.2,120.10 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:116.11,118.3 1 2
github.com/observerly/dusk/pkg/dusk/lunar.go:130.61,135.12 2 1450
github.com/observerly/dusk/pkg/dusk/lunar.go:139.2,139.11 1 1450
github.com/observerly/dusk/pkg/dusk/lunar.go:135.12,137.3 1 1440
github.com/observerly/dusk/pkg/dusk/lunar.go:151.76,153.2 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:164.76,166.2 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:174.74,199.2 10 4
github.com/observerly/dusk/pkg/dusk/lunar.go:209.70,238.20 15 1445
github.com/observerly/dusk/pkg/dusk/lunar.go:256.2,256.20 1 1445
github.com/observerly/dusk/pkg/dusk/lunar.go:271.2,275.3 1 1445
github.com/observerly/dusk/pkg/dusk/lunar.go:238.20,243.14 3 86700
github.com/observerly/dusk/pkg/dusk/lunar.go:244.10,246.21 2 46240
github.com/observerly/dusk/pkg/dusk/lunar.go:247.14,249.25 2 31790
github.com/observerly/dusk/pkg/dusk/lunar.go:250.14,252.26 2 8670
github.com/observerly/dusk/pkg/dusk/lunar.go:256.20,261.14 3 86700
github.com/observerly/dusk/pkg/dusk/lunar.go:262.10,263.21 1 49130
github.com/observerly/dusk/pkg/dusk/lunar.go:264.14,265.25 1 34680
github.com/observerly/dusk/pkg/dusk/lunar.go:266.14,267.26 1 2890
github.com/observerly/dusk/pkg/dusk/lunar.go:447.53,449.2 1 2
github.com/observerly/dusk/pkg/dusk/lunar.go:464.93,474.2 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:486.103,495.11 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:500.2,500.11 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:505.2,505.14 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:495.11,497.3 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:500.11,502.3 1 0
github.com/observerly/dusk/pkg/dusk/lunar.go:516.139,525.16 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:529.2,531.39 2 1
github.com/observerly/dusk/pkg/dusk/lunar.go:546.2,546.35 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:525.16,527.3 1 0
github.com/observerly/dusk/pkg/dusk/lunar.go:531.39,544.3 7 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
github.com/observerly/dusk/pkg/dusk/solar.go:58.74,60.2 1 24
github.com/observerly/dusk/pkg/dusk/solar.go:71.46,73.2 1 25
github.com/observerly/dusk/pkg/dusk/solar.go:81.47,86.11 2 10
github.com/observerly/dusk/pkg/dusk/solar.go:90.2,90.10 1 10
github.com/observerly/dusk/pkg/dusk/solar.go:81.47,86.11 2 1450
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/trigonometry.go:10.30,12.2 1 114433
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/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/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
43 changes: 43 additions & 0 deletions pkg/dusk/lunar.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package dusk
import (
"math"
"time"

tzm "github.com/zsefvlol/timezonemapper"
)

/*
Expand Down Expand Up @@ -502,3 +504,44 @@ func GetLunarTransitJulianDate(datetime time.Time, α float64, longitude float64
// add the days fraction to the Julian date at 0h:
return J + m
}

/*
GetLunarHorizontalCoordinatesForDay()
@param datetime - the datetime of the observer (in UTC)
@param longitude - is the longitude (west is negative, east is positive) in degrees of some observer on Earth
@param latitude - is the latitude (south is negative, north is positive) in degrees of some observer on Earth
@returns the horizontal coordinates of the Moon for every minute of a given day.
*/
func GetLunarHorizontalCoordinatesForDay(datetime time.Time, longitude float64, latitude float64) ([]TemporalHorizontalCoordinate, error) {
// create an empty list of horizontalCoordinate structs:
horizontalCoordinates := make([]TemporalHorizontalCoordinate, 1440)

// get the corresponding timezone for the longitude and latitude provided:
timezone := tzm.LatLngToTimezoneString(latitude, longitude)

location, err := time.LoadLocation(timezone)

if err != nil {
return horizontalCoordinates, err
}

var d = time.Date(datetime.Year(), datetime.Month(), datetime.Day(), 0, 0, 0, 0, location)

for i := range horizontalCoordinates {
// Get the current equatorial position of the moon:
var ec EclipticCoordinate = GetLunarEclipticPosition(d)

var eq EquatorialCoordinate = ConvertEclipticCoordinateToEquatorial(d, ec)

var hz HorizontalCoordinate = ConvertEquatorialCoordinateToHorizontal(d, longitude, latitude, eq)

horizontalCoordinates[i].datetime = d
horizontalCoordinates[i].a = hz.a
horizontalCoordinates[i].A = hz.A

d = d.Add(time.Minute * 1)
}

return horizontalCoordinates, nil
}
12 changes: 12 additions & 0 deletions pkg/dusk/lunar_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -249,3 +249,15 @@ func TestGetLunarTransitJulianDate(t *testing.T) {
t.Errorf("got %f, wanted %f", got, want)
}
}

func TestGetLunarHorizontalCoordinatesForDay(t *testing.T) {
horizontalCoordinates, err := GetLunarHorizontalCoordinatesForDay(datetime, longitude, latitude)

if err != nil {
t.Errorf("got %q", err)
}

if len(horizontalCoordinates) != 1440 {
t.Errorf("there is not enough horizontal coordinates for the day, expected 1440")
}
}

0 comments on commit 511fde4

Please sign in to comment.