Skip to content

Commit

Permalink
Merge pull request #47 from observerly/feature/dusk/ConvertEclipticCo…
Browse files Browse the repository at this point in the history
…ordinateToEquatorial

feat: Added ConvertEclipticCoordinateToEquatorial().
  • Loading branch information
michealroberts authored Feb 21, 2022
2 parents 4af4981 + 6e3eee2 commit b96cdf4
Show file tree
Hide file tree
Showing 3 changed files with 117 additions and 53 deletions.
98 changes: 45 additions & 53 deletions coverage.txt
Original file line number Diff line number Diff line change
@@ -1,34 +1,13 @@
mode: atomic
github.com/observerly/dusk/pkg/dusk/solar.go:21.45,24.2 1 31
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 8
github.com/observerly/dusk/pkg/dusk/solar.go:90.2,90.10 1 8
github.com/observerly/dusk/pkg/dusk/solar.go:86.11,88.3 1 8
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 446
github.com/observerly/dusk/pkg/dusk/trigonometry.go:14.30,16.2 1 90
github.com/observerly/dusk/pkg/dusk/trigonometry.go:18.44,20.2 1 121
github.com/observerly/dusk/pkg/dusk/trigonometry.go:22.30,24.2 1 5
github.com/observerly/dusk/pkg/dusk/trigonometry.go:26.31,28.2 1 30
github.com/observerly/dusk/pkg/dusk/trigonometry.go:30.31,32.2 1 26
github.com/observerly/dusk/pkg/dusk/trigonometry.go:34.31,36.2 1 1
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 4
github.com/observerly/dusk/pkg/dusk/utils.go:35.2,35.11 1 4
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 4
github.com/observerly/dusk/pkg/dusk/utils.go:60.84,62.2 1 6
github.com/observerly/dusk/pkg/dusk/coordinates.go:26.108,45.12 10 2
github.com/observerly/dusk/pkg/dusk/coordinates.go:49.2,52.3 1 2
github.com/observerly/dusk/pkg/dusk/coordinates.go:45.12,47.3 1 2
github.com/observerly/dusk/pkg/dusk/epoch.go:31.48,36.2 2 62
github.com/observerly/dusk/pkg/dusk/epoch.go:43.45,45.2 1 70
github.com/observerly/dusk/pkg/dusk/epoch.go:53.65,64.2 4 31
Expand All @@ -44,39 +23,52 @@ github.com/observerly/dusk/pkg/dusk/epoch.go:170.70,175.2 2 30
github.com/observerly/dusk/pkg/dusk/lunar.go:15.47,20.11 2 15
github.com/observerly/dusk/pkg/dusk/lunar.go:24.2,24.10 1 15
github.com/observerly/dusk/pkg/dusk/lunar.go:20.11,22.3 1 12
github.com/observerly/dusk/pkg/dusk/lunar.go:34.48,39.11 2 3
github.com/observerly/dusk/pkg/dusk/lunar.go:43.2,43.10 1 3
github.com/observerly/dusk/pkg/dusk/lunar.go:39.11,41.3 1 3
github.com/observerly/dusk/pkg/dusk/lunar.go:53.45,58.11 2 8
github.com/observerly/dusk/pkg/dusk/lunar.go:62.2,62.10 1 8
github.com/observerly/dusk/pkg/dusk/lunar.go:58.11,60.3 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:72.52,77.11 2 8
github.com/observerly/dusk/pkg/dusk/lunar.go:81.2,81.10 1 8
github.com/observerly/dusk/pkg/dusk/lunar.go:77.11,79.3 1 5
github.com/observerly/dusk/pkg/dusk/lunar.go:34.48,39.11 2 1
github.com/observerly/dusk/pkg/dusk/lunar.go:43.2,43.10 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:39.11,41.3 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:53.45,58.11 2 6
github.com/observerly/dusk/pkg/dusk/lunar.go:62.2,62.10 1 6
github.com/observerly/dusk/pkg/dusk/lunar.go:58.11,60.3 1 3
github.com/observerly/dusk/pkg/dusk/lunar.go:72.52,77.11 2 6
github.com/observerly/dusk/pkg/dusk/lunar.go:81.2,81.10 1 6
github.com/observerly/dusk/pkg/dusk/lunar.go:77.11,79.3 1 3
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 8
github.com/observerly/dusk/pkg/dusk/lunar.go:137.2,137.11 1 8
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 2
github.com/observerly/dusk/pkg/dusk/lunar.go:254.2,254.20 1 2
github.com/observerly/dusk/pkg/dusk/lunar.go:269.2,273.3 1 2
github.com/observerly/dusk/pkg/dusk/lunar.go:236.20,241.14 3 120
github.com/observerly/dusk/pkg/dusk/lunar.go:242.10,244.21 2 64
github.com/observerly/dusk/pkg/dusk/lunar.go:245.14,247.25 2 44
github.com/observerly/dusk/pkg/dusk/lunar.go:248.14,250.26 2 12
github.com/observerly/dusk/pkg/dusk/lunar.go:254.20,259.14 3 120
github.com/observerly/dusk/pkg/dusk/lunar.go:260.10,261.21 1 68
github.com/observerly/dusk/pkg/dusk/lunar.go:262.14,263.25 1 48
github.com/observerly/dusk/pkg/dusk/lunar.go:264.14,265.26 1 4
github.com/observerly/dusk/pkg/dusk/lunar.go:447.81,453.2 2 1
github.com/observerly/dusk/pkg/dusk/lunar.go:465.103,474.11 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:479.2,479.14 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:474.11,476.3 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:211.81,217.2 2 1
github.com/observerly/dusk/pkg/dusk/lunar.go:229.103,238.11 4 1
github.com/observerly/dusk/pkg/dusk/lunar.go:243.2,243.14 1 1
github.com/observerly/dusk/pkg/dusk/lunar.go:238.11,240.3 1 1
github.com/observerly/dusk/pkg/dusk/solar.go:21.45,24.2 1 29
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: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 318
github.com/observerly/dusk/pkg/dusk/trigonometry.go:14.30,16.2 1 106
github.com/observerly/dusk/pkg/dusk/trigonometry.go:18.44,20.2 1 1
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 32
github.com/observerly/dusk/pkg/dusk/trigonometry.go:30.31,32.2 1 26
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
41 changes: 41 additions & 0 deletions pkg/dusk/coordinates.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package dusk

import (
"time"
)

type EquatorialCoordinate struct {
ra float64
dec float64
Expand All @@ -10,3 +14,40 @@ type EclipticCoordinate struct {
β float64
Δ float64
}

/*
ConvertEclipticCoordinateToEquatorial()
@param datetime - the datetime of the observer (in UTC)
@param geocentric ecliptic coordinate of type EclipticCoordinate { λ, β, Λ }
@returns the converted equatorial coordinate { ra, dec }
@see eq13.3 & eq13.4 p.93 of Meeus, Jean. 1991. Astronomical algorithms. Richmond, Va: Willmann-Bell.
*/
func ConvertEclipticCoordinateToEquatorial(datetime time.Time, ec EclipticCoordinate) EquatorialCoordinate {
var J = GetCurrentJulianCenturyRelativeToJ2000(datetime)

var L float64 = GetSolarMeanLongitude(J)

var l float64 = GetLunarMeanLongitude(J)

var Ω float64 = GetLunarLongitudeOfTheAscendingNode(J)

var ε float64 = GetMeanObliquityOfTheEcliptic(J) + GetNutationInObliquityOfTheEcliptic(L, l, Ω)

var λ = ec.λ

var β = ec.β

var α = atanx((sinx(λ)*cosx(ε) - tanx(β)*sinx(ε)) / cosx(λ))

var δ = asinx(sinx(β)*cosx(ε) + cosx(β)*sinx(ε)*sinx(λ))

if α < 0 {
α += 180
}

return EquatorialCoordinate{
ra: α,
dec: δ,
}
}
31 changes: 31 additions & 0 deletions pkg/dusk/coordinates_test.go
Original file line number Diff line number Diff line change
@@ -1 +1,32 @@
package dusk

import (
"math"
"testing"
)

func TestConvertEclipticCoordinateToEquatorialRA(t *testing.T) {
// utilising the ecliptic position of the moon on the datetime provided:
var ec EquatorialCoordinate = ConvertEclipticCoordinateToEquatorial(d, EclipticCoordinate{λ: 133.162655, β: -3.229126, Δ: 0})

var got float64 = ec.ra

var want float64 = 134.688470

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

func TestConvertEclipticCoordinateToEquatorialDec(t *testing.T) {
// utilising the ecliptic position of the moon on the datetime provided:
var ec EquatorialCoordinate = ConvertEclipticCoordinateToEquatorial(d, EclipticCoordinate{λ: 133.162655, β: -3.229126, Δ: 0})

var got float64 = ec.dec

var want float64 = 13.768368

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

0 comments on commit b96cdf4

Please sign in to comment.