func ExampleTimes() { // Example 15.a, p. 103. // Venus on 1988 March 20 p := globe.Coord{ Lon: unit.NewAngle(' ', 71, 5, 0), Lat: unit.NewAngle(' ', 42, 20, 0), } Th0 := unit.NewTime(' ', 11, 50, 58.1) α3 := []unit.RA{ unit.NewRA(2, 42, 43.25), unit.NewRA(2, 46, 55.51), unit.NewRA(2, 51, 07.69), } δ3 := []unit.Angle{ unit.NewAngle(' ', 18, 02, 51.4), unit.NewAngle(' ', 18, 26, 27.3), unit.NewAngle(' ', 18, 49, 38.7), } h0 := unit.AngleFromDeg(-.5667) ΔT := unit.Time(56) tRise, tTransit, tSet, err := rise.Times(p, ΔT, h0, Th0, α3, δ3) if err != nil { fmt.Println(err) return } fmt.Printf("rising: %+.5f %02s\n", tRise/86400, sexa.FmtTime(tRise)) fmt.Printf("transit: %+.5f %02s\n", tTransit/86400, sexa.FmtTime(tTransit)) fmt.Printf("seting: %+.5f %02s\n", tSet/86400, sexa.FmtTime(tSet)) // Output: // rising: +0.51766 12ʰ25ᵐ26ˢ // transit: +0.81980 19ʰ40ᵐ30ˢ // seting: +0.12130 02ʰ54ᵐ40ˢ }
func ExampleTimes_computed() { // Example 15.a, p. 103, but using meeus packages to compute values // given in the text. jd := julian.CalendarGregorianToJD(1988, 3, 20) p := globe.Coord{ Lon: unit.NewAngle(' ', 71, 5, 0), Lat: unit.NewAngle(' ', 42, 20, 0), } // Th0 computed rather than taken from the text. Th0 := sidereal.Apparent0UT(jd) // Venus α, δ computed rather than taken from the text. e, err := pp.LoadPlanet(pp.Earth) if err != nil { fmt.Println(err) return } v, err := pp.LoadPlanet(pp.Venus) if err != nil { fmt.Println(err) return } α := make([]unit.RA, 3) δ := make([]unit.Angle, 3) α[0], δ[0] = elliptic.Position(v, e, jd-1) α[1], δ[1] = elliptic.Position(v, e, jd) α[2], δ[2] = elliptic.Position(v, e, jd+1) for i, j := range []float64{jd - 1, jd, jd + 1} { _, m, d := julian.JDToCalendar(j) fmt.Printf("%s %.0f α: %0.2s δ: %0.1s\n", time.Month(m), d, sexa.FmtRA(α[i]), sexa.FmtAngle(δ[i])) } // ΔT computed rather than taken from the text. ΔT := deltat.Interp10A(jd) fmt.Printf("ΔT: %.1f\n", ΔT) h0 := rise.Stdh0Stellar tRise, tTransit, tSet, err := rise.Times(p, ΔT, h0, Th0, α, δ) if err != nil { fmt.Println(err) return } fmt.Printf("rising: %+.5f %02s\n", tRise/86400, sexa.FmtTime(tRise)) fmt.Printf("transit: %+.5f %02s\n", tTransit/86400, sexa.FmtTime(tTransit)) fmt.Printf("seting: %+.5f %02s\n", tSet/86400, sexa.FmtTime(tSet)) // Output: // March 19 α: 2ʰ42ᵐ43.25ˢ δ: 18°02′51.4″ // March 20 α: 2ʰ46ᵐ55.51ˢ δ: 18°26′27.3″ // March 21 α: 2ʰ51ᵐ07.69ˢ δ: 18°49′38.7″ // ΔT: 55.9 // rising: +0.51766 12ʰ25ᵐ26ˢ // transit: +0.81980 19ʰ40ᵐ30ˢ // seting: +0.12130 02ʰ54ᵐ40ˢ }
func ExampleTimes() { // Example 15.a, p. 103. jd := julian.CalendarGregorianToJD(1988, 3, 20) p := globe.Coord{ Lon: base.NewAngle(false, 71, 5, 0).Rad(), Lat: base.NewAngle(false, 42, 20, 0).Rad(), } // Meeus gives us the value of 11h 50m 58.1s but we have a package // function for this: Th0 := sidereal.Apparent0UT(jd) α3 := []float64{ base.NewRA(2, 42, 43.25).Rad(), base.NewRA(2, 46, 55.51).Rad(), base.NewRA(2, 51, 07.69).Rad(), } δ3 := []float64{ base.NewAngle(false, 18, 02, 51.4).Rad(), base.NewAngle(false, 18, 26, 27.3).Rad(), base.NewAngle(false, 18, 49, 38.7).Rad(), } h0 := rise.Stdh0Stellar // Similarly as with Th0, Meeus gives us the value of 56 for ΔT but // let's use our package function. ΔT := deltat.Interp10A(jd) rise, transit, set, err := rise.Times(p, ΔT, h0, Th0, α3, δ3) if err != nil { fmt.Println(err) return } fmt.Println("rising: ", base.NewFmtTime(rise)) fmt.Println("transit:", base.NewFmtTime(transit)) fmt.Println("seting: ", base.NewFmtTime(set)) // Output: // rising: 12ʰ26ᵐ9ˢ // transit: 19ʰ40ᵐ30ˢ // seting: 2ʰ54ᵐ26ˢ }