blob: 4c57928993704c2bf21411c4e1ad6cb342618088 (
plain)
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
|
/*
Implementing the "Two-line element set (TLE)", a data format encoding orbital elements of Earth-orbiting objects. https://en.wikipedia.org/wiki/Two-line_element_set
*/
package TLE
// TLE defines the lines contained in a Two-Line-Element
type TLE struct {
TitleLine TitleLine `json:"titleline"`
LineOne LineOne `json:"lineone"`
LineTwo LineTwo `json:"linetwo"`
}
// NewTLE returns a pointer to a TLE struct filled with the given Lines
func NewTLE(titleLine TitleLine, lineOne LineOne, lineTwo LineTwo) *TLE {
return &TLE{TitleLine: titleLine, LineOne: lineOne, LineTwo: lineTwo}
}
// TitleLine defines the first line in the the TLE
// It contains the name of the satellite
type TitleLine struct {
Satname string `json:"satname"`
}
// LineOne defines the first line in the TLE
type LineOne struct {
Linenumber int8 `json:"linenumber"`
// Catalog number defined by USSPACECOM
// A "U" indicates an unclassified object
SatelliteNumber int `json:"satellitenumber"`
Classification rune `json:"classification"`
InternationalDesignator InternationalDesignator `json:"internationaldesignator"`
Epoch Epoch `json:"epoch"`
Firstderiv float64 `json:"firstderiv"`
Secondderiv float64 `json:"secondderiv"`
BSTAR float64 `json:"BSTAR"`
Numberzero int8 `json:"numberzero"`
ElementSetNumber int `json:"elementesetnumber"`
Checksum int8 `json:"checksum"`
}
// InternationalDesignator stores information about the satellite such as when it launched
type InternationalDesignator struct {
// Last two digits of launch year
Launchyear int8 `json:"launchyear"`
// Launch number of the year
Launchnumber int `json:"launchnumber"`
// Piece of the launch
Launchpiece rune `json:"launchpiece"`
}
type Epoch struct {
Year int8 `json:"year"`
Dayfraction float64 `json:"dayfraction"`
}
type LineTwo struct {
Linenumber int8 `json:"linenumber"`
Satellitenumber int `json:"satellitenumber"`
Inclination float64 `json:"inclination"`
RightAscensionOfTheAscendingNode float64 `json:"rightascensionoftheascendingnode"`
Eccentricity float64 `json:"eccentricity"`
ArgumentOfPerigee float64 `json:"argumentofperigee"`
MeanAnomaly float64 `json:"meananomaly"`
MeanMotion float64 `json:"meanmotion"`
RevolutionNumberAtEpoch int `json:"revolutionnumberatepoch"`
Checksum int8 `json:"checksum"`
}
|