init
commit
9d047c848a
@ -0,0 +1,24 @@
|
||||
package basic
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func Test_JDECALC(t *testing.T) {
|
||||
i := 10
|
||||
for i > 0 {
|
||||
fmt.Printf("%.18f\n", GetNowJDE())
|
||||
time.Sleep(time.Second)
|
||||
i--
|
||||
}
|
||||
}
|
||||
|
||||
func Test_TDUT(t *testing.T) {
|
||||
fmt.Printf("%.18f\n", DeltaT(2119.5, false))
|
||||
}
|
||||
|
||||
func Test_JDE2(t *testing.T) {
|
||||
fmt.Println(JDE2Date(2458868.500))
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package basic
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Test_LoBo(t *testing.T) {
|
||||
fmt.Sprintf("%.14f", LoToRa(22, 33, 2451545.0))
|
||||
}
|
@ -0,0 +1,147 @@
|
||||
package basic
|
||||
|
||||
import (
|
||||
"math"
|
||||
|
||||
"b612.me/astro/planet"
|
||||
. "b612.me/astro/tools"
|
||||
)
|
||||
|
||||
func JupiterL(JD float64) float64 {
|
||||
return planet.WherePlanet(4, 0, JD)
|
||||
}
|
||||
|
||||
func JupiterB(JD float64) float64 {
|
||||
return planet.WherePlanet(4, 1, JD)
|
||||
}
|
||||
func JupiterR(JD float64) float64 {
|
||||
return planet.WherePlanet(4, 2, JD)
|
||||
}
|
||||
func AJupiterX(JD float64) float64 {
|
||||
l := JupiterL(JD)
|
||||
b := JupiterB(JD)
|
||||
r := JupiterR(JD)
|
||||
el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
x := r*Cos(b)*Cos(l) - er*Cos(eb)*Cos(el)
|
||||
return x
|
||||
}
|
||||
|
||||
func AJupiterY(JD float64) float64 {
|
||||
|
||||
l := JupiterL(JD)
|
||||
b := JupiterB(JD)
|
||||
r := JupiterR(JD)
|
||||
el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
y := r*Cos(b)*Sin(l) - er*Cos(eb)*Sin(el)
|
||||
return y
|
||||
}
|
||||
func AJupiterZ(JD float64) float64 {
|
||||
//l := JupiterL(JD)
|
||||
b := JupiterB(JD)
|
||||
r := JupiterR(JD)
|
||||
// el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
z := r*Sin(b) - er*Sin(eb)
|
||||
return z
|
||||
}
|
||||
|
||||
func AJupiterXYZ(JD float64) (float64, float64, float64) {
|
||||
l := JupiterL(JD)
|
||||
b := JupiterB(JD)
|
||||
r := JupiterR(JD)
|
||||
el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
x := r*Cos(b)*Cos(l) - er*Cos(eb)*Cos(el)
|
||||
y := r*Cos(b)*Sin(l) - er*Cos(eb)*Sin(el)
|
||||
z := r*Sin(b) - er*Sin(eb)
|
||||
return x, y, z
|
||||
}
|
||||
|
||||
func JupiterSeeRa(JD float64) float64 {
|
||||
lo, bo := JupiterSeeLoBo(JD)
|
||||
sita := Sita(JD)
|
||||
ra := math.Atan2((Sin(lo)*Cos(sita) - Tan(bo)*Sin(sita)), Cos(lo))
|
||||
ra = ra * 180 / math.Pi
|
||||
return Limit360(ra)
|
||||
}
|
||||
func JupiterSeeDec(JD float64) float64 {
|
||||
lo, bo := JupiterSeeLoBo(JD)
|
||||
sita := Sita(JD)
|
||||
dec := ArcSin(Sin(bo)*Cos(sita) + Cos(bo)*Sin(sita)*Sin(lo))
|
||||
return dec
|
||||
}
|
||||
|
||||
func JupiterSeeRaDec(JD float64) (float64, float64) {
|
||||
lo, bo := JupiterSeeLoBo(JD)
|
||||
sita := Sita(JD)
|
||||
ra := math.Atan2((Sin(lo)*Cos(sita) - Tan(bo)*Sin(sita)), Cos(lo))
|
||||
ra = ra * 180 / math.Pi
|
||||
dec := ArcSin(Sin(bo)*Cos(sita) + Cos(bo)*Sin(sita)*Sin(lo))
|
||||
return Limit360(ra), dec
|
||||
}
|
||||
|
||||
func EarthJupiterAway(JD float64) float64 {
|
||||
x, y, z := AJupiterXYZ(JD)
|
||||
to := math.Sqrt(x*x + y*y + z*z)
|
||||
return to
|
||||
}
|
||||
|
||||
func JupiterSeeLo(JD float64) float64 {
|
||||
x, y, z := AJupiterXYZ(JD)
|
||||
to := 0.0057755183 * math.Sqrt(x*x+y*y+z*z)
|
||||
x, y, z = AJupiterXYZ(JD - to)
|
||||
lo := math.Atan2(y, x)
|
||||
bo := math.Atan2(z, math.Sqrt(x*x+y*y))
|
||||
lo = lo * 180 / math.Pi
|
||||
bo = bo * 180 / math.Pi
|
||||
lo = Limit360(lo)
|
||||
//lo-=GXCLo(lo,bo,JD)/3600;
|
||||
//bo+=GXCBo(lo,bo,JD);
|
||||
lo += HJZD(JD)
|
||||
return lo
|
||||
}
|
||||
|
||||
func JupiterSeeBo(JD float64) float64 {
|
||||
x, y, z := AJupiterXYZ(JD)
|
||||
to := 0.0057755183 * math.Sqrt(x*x+y*y+z*z)
|
||||
x, y, z = AJupiterXYZ(JD - to)
|
||||
//lo := math.Atan2(y, x)
|
||||
bo := math.Atan2(z, math.Sqrt(x*x+y*y))
|
||||
//lo = lo * 180 / math.Pi
|
||||
bo = bo * 180 / math.Pi
|
||||
//lo+=GXCLo(lo,bo,JD);
|
||||
//bo+=GXCBo(lo,bo,JD)/3600;
|
||||
//lo+=HJZD(JD);
|
||||
return bo
|
||||
}
|
||||
|
||||
func JupiterSeeLoBo(JD float64) (float64, float64) {
|
||||
x, y, z := AJupiterXYZ(JD)
|
||||
to := 0.0057755183 * math.Sqrt(x*x+y*y+z*z)
|
||||
x, y, z = AJupiterXYZ(JD - to)
|
||||
lo := math.Atan2(y, x)
|
||||
bo := math.Atan2(z, math.Sqrt(x*x+y*y))
|
||||
lo = lo * 180 / math.Pi
|
||||
bo = bo * 180 / math.Pi
|
||||
lo = Limit360(lo)
|
||||
//lo-=GXCLo(lo,bo,JD)/3600;
|
||||
//bo+=GXCBo(lo,bo,JD);
|
||||
lo += HJZD(JD)
|
||||
return lo, bo
|
||||
}
|
||||
|
||||
func JupiterMag(JD float64) float64 {
|
||||
AwaySun := JupiterR(JD)
|
||||
AwayEarth := EarthJupiterAway(JD)
|
||||
Away := planet.WherePlanet(-1, 2, JD)
|
||||
i := (AwaySun*AwaySun + AwayEarth*AwayEarth - Away*Away) / (2 * AwaySun * AwayEarth)
|
||||
i = ArcCos(i)
|
||||
Mag := -9.40 + 5*math.Log10(AwaySun*AwayEarth) + 0.0005*i
|
||||
return FloatRound(Mag, 2)
|
||||
}
|
@ -0,0 +1,147 @@
|
||||
package basic
|
||||
|
||||
import (
|
||||
"math"
|
||||
|
||||
"b612.me/astro/planet"
|
||||
. "b612.me/astro/tools"
|
||||
)
|
||||
|
||||
func MarsL(JD float64) float64 {
|
||||
return planet.WherePlanet(3, 0, JD)
|
||||
}
|
||||
|
||||
func MarsB(JD float64) float64 {
|
||||
return planet.WherePlanet(3, 1, JD)
|
||||
}
|
||||
func MarsR(JD float64) float64 {
|
||||
return planet.WherePlanet(3, 2, JD)
|
||||
}
|
||||
func AMarsX(JD float64) float64 {
|
||||
l := MarsL(JD)
|
||||
b := MarsB(JD)
|
||||
r := MarsR(JD)
|
||||
el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
x := r*Cos(b)*Cos(l) - er*Cos(eb)*Cos(el)
|
||||
return x
|
||||
}
|
||||
|
||||
func AMarsY(JD float64) float64 {
|
||||
|
||||
l := MarsL(JD)
|
||||
b := MarsB(JD)
|
||||
r := MarsR(JD)
|
||||
el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
y := r*Cos(b)*Sin(l) - er*Cos(eb)*Sin(el)
|
||||
return y
|
||||
}
|
||||
func AMarsZ(JD float64) float64 {
|
||||
//l := MarsL(JD)
|
||||
b := MarsB(JD)
|
||||
r := MarsR(JD)
|
||||
// el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
z := r*Sin(b) - er*Sin(eb)
|
||||
return z
|
||||
}
|
||||
|
||||
func AMarsXYZ(JD float64) (float64, float64, float64) {
|
||||
l := MarsL(JD)
|
||||
b := MarsB(JD)
|
||||
r := MarsR(JD)
|
||||
el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
x := r*Cos(b)*Cos(l) - er*Cos(eb)*Cos(el)
|
||||
y := r*Cos(b)*Sin(l) - er*Cos(eb)*Sin(el)
|
||||
z := r*Sin(b) - er*Sin(eb)
|
||||
return x, y, z
|
||||
}
|
||||
|
||||
func MarsSeeRa(JD float64) float64 {
|
||||
lo, bo := MarsSeeLoBo(JD)
|
||||
sita := Sita(JD)
|
||||
ra := math.Atan2((Sin(lo)*Cos(sita) - Tan(bo)*Sin(sita)), Cos(lo))
|
||||
ra = ra * 180 / math.Pi
|
||||
return Limit360(ra)
|
||||
}
|
||||
func MarsSeeDec(JD float64) float64 {
|
||||
lo, bo := MarsSeeLoBo(JD)
|
||||
sita := Sita(JD)
|
||||
dec := ArcSin(Sin(bo)*Cos(sita) + Cos(bo)*Sin(sita)*Sin(lo))
|
||||
return dec
|
||||
}
|
||||
|
||||
func MarsSeeRaDec(JD float64) (float64, float64) {
|
||||
lo, bo := MarsSeeLoBo(JD)
|
||||
sita := Sita(JD)
|
||||
ra := math.Atan2((Sin(lo)*Cos(sita) - Tan(bo)*Sin(sita)), Cos(lo))
|
||||
ra = ra * 180 / math.Pi
|
||||
dec := ArcSin(Sin(bo)*Cos(sita) + Cos(bo)*Sin(sita)*Sin(lo))
|
||||
return Limit360(ra), dec
|
||||
}
|
||||
|
||||
func EarthMarsAway(JD float64) float64 {
|
||||
x, y, z := AMarsXYZ(JD)
|
||||
to := math.Sqrt(x*x + y*y + z*z)
|
||||
return to
|
||||
}
|
||||
|
||||
func MarsSeeLo(JD float64) float64 {
|
||||
x, y, z := AMarsXYZ(JD)
|
||||
to := 0.0057755183 * math.Sqrt(x*x+y*y+z*z)
|
||||
x, y, z = AMarsXYZ(JD - to)
|
||||
lo := math.Atan2(y, x)
|
||||
bo := math.Atan2(z, math.Sqrt(x*x+y*y))
|
||||
lo = lo * 180 / math.Pi
|
||||
bo = bo * 180 / math.Pi
|
||||
lo = Limit360(lo)
|
||||
//lo-=GXCLo(lo,bo,JD)/3600;
|
||||
//bo+=GXCBo(lo,bo,JD);
|
||||
lo += HJZD(JD)
|
||||
return lo
|
||||
}
|
||||
|
||||
func MarsSeeBo(JD float64) float64 {
|
||||
x, y, z := AMarsXYZ(JD)
|
||||
to := 0.0057755183 * math.Sqrt(x*x+y*y+z*z)
|
||||
x, y, z = AMarsXYZ(JD - to)
|
||||
//lo := math.Atan2(y, x)
|
||||
bo := math.Atan2(z, math.Sqrt(x*x+y*y))
|
||||
//lo = lo * 180 / math.Pi
|
||||
bo = bo * 180 / math.Pi
|
||||
//lo+=GXCLo(lo,bo,JD);
|
||||
//bo+=GXCBo(lo,bo,JD)/3600;
|
||||
//lo+=HJZD(JD);
|
||||
return bo
|
||||
}
|
||||
|
||||
func MarsSeeLoBo(JD float64) (float64, float64) {
|
||||
x, y, z := AMarsXYZ(JD)
|
||||
to := 0.0057755183 * math.Sqrt(x*x+y*y+z*z)
|
||||
x, y, z = AMarsXYZ(JD - to)
|
||||
lo := math.Atan2(y, x)
|
||||
bo := math.Atan2(z, math.Sqrt(x*x+y*y))
|
||||
lo = lo * 180 / math.Pi
|
||||
bo = bo * 180 / math.Pi
|
||||
lo = Limit360(lo)
|
||||
//lo-=GXCLo(lo,bo,JD)/3600;
|
||||
//bo+=GXCBo(lo,bo,JD);
|
||||
lo += HJZD(JD)
|
||||
return lo, bo
|
||||
}
|
||||
|
||||
func MarsMag(JD float64) float64 {
|
||||
AwaySun := MarsR(JD)
|
||||
AwayEarth := EarthMarsAway(JD)
|
||||
Away := planet.WherePlanet(-1, 2, JD)
|
||||
i := (AwaySun*AwaySun + AwayEarth*AwayEarth - Away*Away) / (2 * AwaySun * AwayEarth)
|
||||
i = ArcCos(i)
|
||||
Mag := -1.52 + 5*math.Log10(AwaySun*AwayEarth) + 0.016*i
|
||||
return FloatRound(Mag, 2)
|
||||
}
|
@ -0,0 +1,147 @@
|
||||
package basic
|
||||
|
||||
import (
|
||||
"math"
|
||||
|
||||
"b612.me/astro/planet"
|
||||
. "b612.me/astro/tools"
|
||||
)
|
||||
|
||||
func MercuryL(JD float64) float64 {
|
||||
return planet.WherePlanet(1, 0, JD)
|
||||
}
|
||||
|
||||
func MercuryB(JD float64) float64 {
|
||||
return planet.WherePlanet(1, 1, JD)
|
||||
}
|
||||
func MercuryR(JD float64) float64 {
|
||||
return planet.WherePlanet(1, 2, JD)
|
||||
}
|
||||
func AMercuryX(JD float64) float64 {
|
||||
l := MercuryL(JD)
|
||||
b := MercuryB(JD)
|
||||
r := MercuryR(JD)
|
||||
el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
x := r*Cos(b)*Cos(l) - er*Cos(eb)*Cos(el)
|
||||
return x
|
||||
}
|
||||
|
||||
func AMercuryY(JD float64) float64 {
|
||||
|
||||
l := MercuryL(JD)
|
||||
b := MercuryB(JD)
|
||||
r := MercuryR(JD)
|
||||
el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
y := r*Cos(b)*Sin(l) - er*Cos(eb)*Sin(el)
|
||||
return y
|
||||
}
|
||||
func AMercuryZ(JD float64) float64 {
|
||||
//l := MercuryL(JD)
|
||||
b := MercuryB(JD)
|
||||
r := MercuryR(JD)
|
||||
// el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
z := r*Sin(b) - er*Sin(eb)
|
||||
return z
|
||||
}
|
||||
|
||||
func AMercuryXYZ(JD float64) (float64, float64, float64) {
|
||||
l := MercuryL(JD)
|
||||
b := MercuryB(JD)
|
||||
r := MercuryR(JD)
|
||||
el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
x := r*Cos(b)*Cos(l) - er*Cos(eb)*Cos(el)
|
||||
y := r*Cos(b)*Sin(l) - er*Cos(eb)*Sin(el)
|
||||
z := r*Sin(b) - er*Sin(eb)
|
||||
return x, y, z
|
||||
}
|
||||
|
||||
func MercurySeeRa(JD float64) float64 {
|
||||
lo, bo := MercurySeeLoBo(JD)
|
||||
sita := Sita(JD)
|
||||
ra := math.Atan2((Sin(lo)*Cos(sita) - Tan(bo)*Sin(sita)), Cos(lo))
|
||||
ra = ra * 180 / math.Pi
|
||||
return Limit360(ra)
|
||||
}
|
||||
func MercurySeeDec(JD float64) float64 {
|
||||
lo, bo := MercurySeeLoBo(JD)
|
||||
sita := Sita(JD)
|
||||
dec := ArcSin(Sin(bo)*Cos(sita) + Cos(bo)*Sin(sita)*Sin(lo))
|
||||
return dec
|
||||
}
|
||||
|
||||
func MercurySeeRaDec(JD float64) (float64, float64) {
|
||||
lo, bo := MercurySeeLoBo(JD)
|
||||
sita := Sita(JD)
|
||||
ra := math.Atan2((Sin(lo)*Cos(sita) - Tan(bo)*Sin(sita)), Cos(lo))
|
||||
ra = ra * 180 / math.Pi
|
||||
dec := ArcSin(Sin(bo)*Cos(sita) + Cos(bo)*Sin(sita)*Sin(lo))
|
||||
return Limit360(ra), dec
|
||||
}
|
||||
|
||||
func EarthMercuryAway(JD float64) float64 {
|
||||
x, y, z := AMercuryXYZ(JD)
|
||||
to := math.Sqrt(x*x + y*y + z*z)
|
||||
return to
|
||||
}
|
||||
|
||||
func MercurySeeLo(JD float64) float64 {
|
||||
x, y, z := AMercuryXYZ(JD)
|
||||
to := 0.0057755183 * math.Sqrt(x*x+y*y+z*z)
|
||||
x, y, z = AMercuryXYZ(JD - to)
|
||||
lo := math.Atan2(y, x)
|
||||
bo := math.Atan2(z, math.Sqrt(x*x+y*y))
|
||||
lo = lo * 180 / math.Pi
|
||||
bo = bo * 180 / math.Pi
|
||||
lo = Limit360(lo)
|
||||
//lo-=GXCLo(lo,bo,JD)/3600;
|
||||
//bo+=GXCBo(lo,bo,JD);
|
||||
lo += HJZD(JD)
|
||||
return lo
|
||||
}
|
||||
|
||||
func MercurySeeBo(JD float64) float64 {
|
||||
x, y, z := AMercuryXYZ(JD)
|
||||
to := 0.0057755183 * math.Sqrt(x*x+y*y+z*z)
|
||||
x, y, z = AMercuryXYZ(JD - to)
|
||||
//lo := math.Atan2(y, x)
|
||||
bo := math.Atan2(z, math.Sqrt(x*x+y*y))
|
||||
//lo = lo * 180 / math.Pi
|
||||
bo = bo * 180 / math.Pi
|
||||
//lo+=GXCLo(lo,bo,JD);
|
||||
//bo+=GXCBo(lo,bo,JD)/3600;
|
||||
//lo+=HJZD(JD);
|
||||
return bo
|
||||
}
|
||||
|
||||
func MercurySeeLoBo(JD float64) (float64, float64) {
|
||||
x, y, z := AMercuryXYZ(JD)
|
||||
to := 0.0057755183 * math.Sqrt(x*x+y*y+z*z)
|
||||
x, y, z = AMercuryXYZ(JD - to)
|
||||
lo := math.Atan2(y, x)
|
||||
bo := math.Atan2(z, math.Sqrt(x*x+y*y))
|
||||
lo = lo * 180 / math.Pi
|
||||
bo = bo * 180 / math.Pi
|
||||
lo = Limit360(lo)
|
||||
//lo-=GXCLo(lo,bo,JD)/3600;
|
||||
//bo+=GXCBo(lo,bo,JD);
|
||||
lo += HJZD(JD)
|
||||
return lo, bo
|
||||
}
|
||||
|
||||
func MercuryMag(JD float64) float64 {
|
||||
AwaySun := MercuryR(JD)
|
||||
AwayEarth := EarthMercuryAway(JD)
|
||||
Away := planet.WherePlanet(-1, 2, JD)
|
||||
i := (AwaySun*AwaySun + AwayEarth*AwayEarth - Away*Away) / (2 * AwaySun * AwayEarth)
|
||||
i = ArcCos(i)
|
||||
Mag := -0.42 + 5*math.Log10(AwaySun*AwayEarth) + 0.0380*i - 0.000273*i*i + 0.000002*i*i*i
|
||||
return FloatRound(Mag, 2)
|
||||
}
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,18 @@
|
||||
package basic
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func Test_MoonS(t *testing.T) {
|
||||
//fmt.Println(Sita(2451547))
|
||||
//fmt.Println(MoonHeight(2451547, 115, 32, 8))
|
||||
a := time.Now().UnixNano()
|
||||
b := GetMoonRiseTime(GetNowJDE(), 115, 32, 8, 0)
|
||||
fmt.Println(time.Now().UnixNano() - a)
|
||||
fmt.Println(JDE2Date((b)))
|
||||
fmt.Println(time.Now().UnixNano() - a)
|
||||
//fmt.Printf("%.14f", GetMoonRiseTime(2451547, 115, 32, 8, 0))
|
||||
}
|
@ -0,0 +1,147 @@
|
||||
package basic
|
||||
|
||||
import (
|
||||
"math"
|
||||
|
||||
"b612.me/astro/planet"
|
||||
. "b612.me/astro/tools"
|
||||
)
|
||||
|
||||
func NeptuneL(JD float64) float64 {
|
||||
return planet.WherePlanet(7, 0, JD)
|
||||
}
|
||||
|
||||
func NeptuneB(JD float64) float64 {
|
||||
return planet.WherePlanet(7, 1, JD)
|
||||
}
|
||||
func NeptuneR(JD float64) float64 {
|
||||
return planet.WherePlanet(7, 2, JD)
|
||||
}
|
||||
func ANeptuneX(JD float64) float64 {
|
||||
l := NeptuneL(JD)
|
||||
b := NeptuneB(JD)
|
||||
r := NeptuneR(JD)
|
||||
el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
x := r*Cos(b)*Cos(l) - er*Cos(eb)*Cos(el)
|
||||
return x
|
||||
}
|
||||
|
||||
func ANeptuneY(JD float64) float64 {
|
||||
|
||||
l := NeptuneL(JD)
|
||||
b := NeptuneB(JD)
|
||||
r := NeptuneR(JD)
|
||||
el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
y := r*Cos(b)*Sin(l) - er*Cos(eb)*Sin(el)
|
||||
return y
|
||||
}
|
||||
func ANeptuneZ(JD float64) float64 {
|
||||
//l := NeptuneL(JD)
|
||||
b := NeptuneB(JD)
|
||||
r := NeptuneR(JD)
|
||||
// el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
z := r*Sin(b) - er*Sin(eb)
|
||||
return z
|
||||
}
|
||||
|
||||
func ANeptuneXYZ(JD float64) (float64, float64, float64) {
|
||||
l := NeptuneL(JD)
|
||||
b := NeptuneB(JD)
|
||||
r := NeptuneR(JD)
|
||||
el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
x := r*Cos(b)*Cos(l) - er*Cos(eb)*Cos(el)
|
||||
y := r*Cos(b)*Sin(l) - er*Cos(eb)*Sin(el)
|
||||
z := r*Sin(b) - er*Sin(eb)
|
||||
return x, y, z
|
||||
}
|
||||
|
||||
func NeptuneSeeRa(JD float64) float64 {
|
||||
lo, bo := NeptuneSeeLoBo(JD)
|
||||
sita := Sita(JD)
|
||||
ra := math.Atan2((Sin(lo)*Cos(sita) - Tan(bo)*Sin(sita)), Cos(lo))
|
||||
ra = ra * 180 / math.Pi
|
||||
return Limit360(ra)
|
||||
}
|
||||
func NeptuneSeeDec(JD float64) float64 {
|
||||
lo, bo := NeptuneSeeLoBo(JD)
|
||||
sita := Sita(JD)
|
||||
dec := ArcSin(Sin(bo)*Cos(sita) + Cos(bo)*Sin(sita)*Sin(lo))
|
||||
return dec
|
||||
}
|
||||
|
||||
func NeptuneSeeRaDec(JD float64) (float64, float64) {
|
||||
lo, bo := NeptuneSeeLoBo(JD)
|
||||
sita := Sita(JD)
|
||||
ra := math.Atan2((Sin(lo)*Cos(sita) - Tan(bo)*Sin(sita)), Cos(lo))
|
||||
ra = ra * 180 / math.Pi
|
||||
dec := ArcSin(Sin(bo)*Cos(sita) + Cos(bo)*Sin(sita)*Sin(lo))
|
||||
return Limit360(ra), dec
|
||||
}
|
||||
|
||||
func EarthNeptuneAway(JD float64) float64 {
|
||||
x, y, z := ANeptuneXYZ(JD)
|
||||
to := math.Sqrt(x*x + y*y + z*z)
|
||||
return to
|
||||
}
|
||||
|
||||
func NeptuneSeeLo(JD float64) float64 {
|
||||
x, y, z := ANeptuneXYZ(JD)
|
||||
to := 0.0057755183 * math.Sqrt(x*x+y*y+z*z)
|
||||
x, y, z = ANeptuneXYZ(JD - to)
|
||||
lo := math.Atan2(y, x)
|
||||
bo := math.Atan2(z, math.Sqrt(x*x+y*y))
|
||||
lo = lo * 180 / math.Pi
|
||||
bo = bo * 180 / math.Pi
|
||||
lo = Limit360(lo)
|
||||
//lo-=GXCLo(lo,bo,JD)/3600;
|
||||
//bo+=GXCBo(lo,bo,JD);
|
||||
lo += HJZD(JD)
|
||||
return lo
|
||||
}
|
||||
|
||||
func NeptuneSeeBo(JD float64) float64 {
|
||||
x, y, z := ANeptuneXYZ(JD)
|
||||
to := 0.0057755183 * math.Sqrt(x*x+y*y+z*z)
|
||||
x, y, z = ANeptuneXYZ(JD - to)
|
||||
//lo := math.Atan2(y, x)
|
||||
bo := math.Atan2(z, math.Sqrt(x*x+y*y))
|
||||
//lo = lo * 180 / math.Pi
|
||||
bo = bo * 180 / math.Pi
|
||||
//lo+=GXCLo(lo,bo,JD);
|
||||
//bo+=GXCBo(lo,bo,JD)/3600;
|
||||
//lo+=HJZD(JD);
|
||||
return bo
|
||||
}
|
||||
|
||||
func NeptuneSeeLoBo(JD float64) (float64, float64) {
|
||||
x, y, z := ANeptuneXYZ(JD)
|
||||
to := 0.0057755183 * math.Sqrt(x*x+y*y+z*z)
|
||||
x, y, z = ANeptuneXYZ(JD - to)
|
||||
lo := math.Atan2(y, x)
|
||||
bo := math.Atan2(z, math.Sqrt(x*x+y*y))
|
||||
lo = lo * 180 / math.Pi
|
||||
bo = bo * 180 / math.Pi
|
||||
lo = Limit360(lo)
|
||||
//lo-=GXCLo(lo,bo,JD)/3600;
|
||||
//bo+=GXCBo(lo,bo,JD);
|
||||
lo += HJZD(JD)
|
||||
return lo, bo
|
||||
}
|
||||
|
||||
func NeptuneMag(JD float64) float64 {
|
||||
AwaySun := NeptuneR(JD)
|
||||
AwayEarth := EarthNeptuneAway(JD)
|
||||
Away := planet.WherePlanet(-1, 2, JD)
|
||||
i := (AwaySun*AwaySun + AwayEarth*AwayEarth - Away*Away) / (2 * AwaySun * AwayEarth)
|
||||
i = ArcCos(i)
|
||||
Mag := -6.87 + 5*math.Log10(AwaySun*AwayEarth)
|
||||
return FloatRound(Mag, 2)
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package basic
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Test_Ra(t *testing.T) {
|
||||
ra, dec := UranusSeeRaDec(2456789.12345)
|
||||
fmt.Printf("%.14f\n%.14f\n", ra, dec)
|
||||
fmt.Println(UranusMag(2456789.12345))
|
||||
ra, dec = NeptuneSeeRaDec(2456789.12345)
|
||||
fmt.Printf("%.14f\n%.14f\n", ra, dec)
|
||||
fmt.Println(NeptuneMag(2456789.12345))
|
||||
}
|
@ -0,0 +1,156 @@
|
||||
package basic
|
||||
|
||||
import (
|
||||
"math"
|
||||
|
||||
"b612.me/astro/planet"
|
||||
. "b612.me/astro/tools"
|
||||
)
|
||||
|
||||
func SaturnL(JD float64) float64 {
|
||||
return planet.WherePlanet(5, 0, JD)
|
||||
}
|
||||
|
||||
func SaturnB(JD float64) float64 {
|
||||
return planet.WherePlanet(5, 1, JD)
|
||||
}
|
||||
func SaturnR(JD float64) float64 {
|
||||
return planet.WherePlanet(5, 2, JD)
|
||||
}
|
||||
func ASaturnX(JD float64) float64 {
|
||||
l := SaturnL(JD)
|
||||
b := SaturnB(JD)
|
||||
r := SaturnR(JD)
|
||||
el := planet.WherePlanet(-1, 0, JD)
|
||||
eb := planet.WherePlanet(-1, 1, JD)
|
||||
er := planet.WherePlanet(-1, 2, JD)
|
||||
x := r*Cos(b)*Cos(l) - er*Cos(eb)*Cos(el)
|
||||
return x
|
||||
}
|
||||
|
||||
func ASaturnY(JD float64) float64 {
|
||||
|
||||
l := SaturnL(JD)
|
||||