# github.com/joshuaferrara/go-satellite Release

Calculate orbital information of satellites in GoLang.

MIT
Install
``` go get github.com/joshuaferrara/go-satellite ```

# satellite

``````import "github.com/joshuaferrara/go-satellite"
``````

## Intro

I decided to port the SGP4 library to GoLang as one of my first projects with the language. I've included a test suite to ensure accuracy.

## Usage

#### Constants

`const DEG2RAD float64 = math.Pi / 180.0`
`const RAD2DEG float64 = 180.0 / math.Pi`
`const TWOPI float64 = math.Pi * 2.0`
`const XPDOTP float64 = 1440.0 / (2.0 * math.Pi)`

#### func ECIToLLA

`func ECIToLLA(eciCoords Vector3, gmst float64) (altitude, velocity float64, ret LatLong)`

Convert Earth Centered Inertial coordinated into equivalent latitude, longitude, altitude and velocity. Reference: http://celestrak.com/columns/v02n03/

#### func GSTimeFromDate

`func GSTimeFromDate(year, mon, day, hr, min, sec int) float64`

Calc GST given year, month, day, hour, minute and second

#### func JDay

`func JDay(year, mon, day, hr, min, sec int) float64`

Calc julian date given year, month, day, hour, minute and second the julian date is defined by each elapsed day since noon, jan 1, 4713 bc.

#### func Propagate

`func Propagate(sat Satellite, year int, month int, day, hours, minutes, seconds int) (position, velocity Vector3)`

Calculates position and velocity vectors for given time

#### func ThetaG_JD

`func ThetaG_JD(jday float64) (ret float64)`

Calculate GMST from Julian date. Reference: The 1992 Astronomical Almanac, page B6.

#### type LatLong

```type LatLong struct {
Latitude, Longitude float64
}```

Holds latitude and Longitude in either degrees or radians

#### func LatLongDeg

`func LatLongDeg(rad LatLong) (deg LatLong)`

Convert LatLong in radians to LatLong in degrees

#### type LookAngles

```type LookAngles struct {
Az, El, Rg float64
}```

Holds an azimuth, elevation and range

#### func ECIToLookAngles

`func ECIToLookAngles(eciSat Vector3, obsCoords LatLong, obsAlt, jday float64) (lookAngles LookAngles)`

Calculate look angles for given satellite position and observer position obsAlt in km Reference: http://celestrak.com/columns/v02n02/

#### type Satellite

```type Satellite struct {
Line1 string
Line2 string
}```

Struct for holding satellite information during and before propagation

#### func ParseTLE

`func ParseTLE(line1, line2, gravconst string) (sat Satellite)`

Parses a two line element dataset into a Satellite struct

#### func TLEToSat

`func TLEToSat(line1, line2 string, gravconst string) Satellite`

Converts a two line element data set into a Satellite struct and runs sgp4init

#### type Vector3

```type Vector3 struct {
X, Y, Z float64
}```

Holds X, Y, Z position

#### func ECIToECEF

`func ECIToECEF(eciCoords Vector3, gmst float64) (ecfCoords Vector3)`

Convert Earth Centered Intertial coordinates into Earth Cenetered Earth Final coordinates Reference: http://ccar.colorado.edu/ASEN5070/handouts/coordsys.doc

#### func LLAToECI

`func LLAToECI(obsCoords LatLong, alt, jday float64) (eciObs Vector3)`

Convert latitude, longitude and altitude into equivalent Earth Centered Intertial coordinates Reference: The 1992 Astronomical Almanac, page K11.