新增恒星相关计算
This commit is contained in:
+49
-49
@@ -830,26 +830,26 @@ func SunTrueLo(JD float64) float64 { // '太阳真黄经
|
||||
return SunTrueLo
|
||||
}
|
||||
|
||||
func SunSeeLo(JD float64) float64 { //'太阳视黄经
|
||||
func SunApparentLo(JD float64) float64 { //'太阳视黄经
|
||||
|
||||
T := (JD - 2451545) / 36525
|
||||
SunSeeLo := SunTrueLo(JD) - 0.00569 - 0.00478*Sin(125.04-1934.136*T)
|
||||
return SunSeeLo
|
||||
SunApparentLo := SunTrueLo(JD) - 0.00569 - 0.00478*Sin(125.04-1934.136*T)
|
||||
return SunApparentLo
|
||||
}
|
||||
|
||||
func SunSeeRa(JD float64) float64 { // '太阳视赤经
|
||||
func SunApparentRa(JD float64) float64 { // '太阳视赤经
|
||||
T := (JD - 2451545) / 36525
|
||||
sitas := Sita(JD) + 0.00256*Cos(125.04-1934.136*T)
|
||||
SunSeeRa := ArcTan(Cos(sitas) * Sin(SunSeeLo(JD)) / Cos(SunSeeLo(JD)))
|
||||
tmp := SunSeeLo(JD)
|
||||
SunApparentRa := ArcTan(Cos(sitas) * Sin(SunApparentLo(JD)) / Cos(SunApparentLo(JD)))
|
||||
tmp := SunApparentLo(JD)
|
||||
if tmp >= 90 && tmp < 180 {
|
||||
SunSeeRa = 180 + SunSeeRa
|
||||
SunApparentRa = 180 + SunApparentRa
|
||||
} else if tmp >= 180 && tmp < 270 {
|
||||
SunSeeRa = 180 + SunSeeRa
|
||||
SunApparentRa = 180 + SunApparentRa
|
||||
} else if tmp >= 270 && tmp <= 360 {
|
||||
SunSeeRa = 360 + SunSeeRa
|
||||
SunApparentRa = 360 + SunApparentRa
|
||||
}
|
||||
return SunSeeRa
|
||||
return SunApparentRa
|
||||
}
|
||||
|
||||
func SunTrueRa(JD float64) float64 { //'太阳真赤经
|
||||
@@ -868,11 +868,11 @@ func SunTrueRa(JD float64) float64 { //'太阳真赤经
|
||||
return SunTrueRa
|
||||
}
|
||||
|
||||
func SunSeeDec(JD float64) float64 { // '太阳视赤纬
|
||||
func SunApparentDec(JD float64) float64 { // '太阳视赤纬
|
||||
T := (JD - 2451545) / 36525
|
||||
sitas := Sita(JD) + 0.00256*Cos(125.04-1934.136*T)
|
||||
SunSeeDec := ArcSin(Sin(sitas) * Sin(SunSeeLo(JD)))
|
||||
return SunSeeDec
|
||||
SunApparentDec := ArcSin(Sin(sitas) * Sin(SunApparentLo(JD)))
|
||||
return SunApparentDec
|
||||
}
|
||||
|
||||
func SunTrueDec(JD float64) float64 { // '太阳真赤纬
|
||||
@@ -882,7 +882,7 @@ func SunTrueDec(JD float64) float64 { // '太阳真赤纬
|
||||
}
|
||||
func SunTime(JD float64) float64 { //均时差
|
||||
|
||||
tm := (SunLo(JD) - 0.0057183 - (HSunSeeRa(JD)) + (HJZD(JD))*Cos(Sita(JD))) / 15
|
||||
tm := (SunLo(JD) - 0.0057183 - (HSunApparentRa(JD)) + (HJZD(JD))*Cos(Sita(JD))) / 15
|
||||
if tm > 23 {
|
||||
tm = -24 + tm
|
||||
}
|
||||
@@ -908,7 +908,7 @@ func HSunTrueBo(JD float64) float64 {
|
||||
return L
|
||||
}
|
||||
|
||||
func HSunSeeLo(JD float64) float64 {
|
||||
func HSunApparentLo(JD float64) float64 {
|
||||
L := HSunTrueLo(JD)
|
||||
/*
|
||||
t := (JD - 2451545) / 365250.0
|
||||
@@ -933,36 +933,36 @@ func EarthAway(JD float64) float64 {
|
||||
return planet.WherePlanet(0, 2, JD)
|
||||
}
|
||||
|
||||
func HSunSeeRaDec(JD float64) (float64, float64) {
|
||||
func HSunApparentRaDec(JD float64) (float64, float64) {
|
||||
T := (JD - 2451545) / 36525
|
||||
sitas := Sita(JD) + 0.00256*Cos(125.04-1934.136*T)
|
||||
sitas2 := EclipticObliquity(JD, false) + 0.00256*Cos(125.04-1934.136*T)
|
||||
tmp := HSunSeeLo(JD)
|
||||
HSunSeeRa := ArcTan(Cos(sitas) * Sin(tmp) / Cos(tmp))
|
||||
HSunSeeDec := ArcSin(Sin(sitas2) * Sin(tmp))
|
||||
tmp := HSunApparentLo(JD)
|
||||
HSunApparentRa := ArcTan(Cos(sitas) * Sin(tmp) / Cos(tmp))
|
||||
HSunApparentDec := ArcSin(Sin(sitas2) * Sin(tmp))
|
||||
if tmp >= 90 && tmp < 180 {
|
||||
HSunSeeRa = 180 + HSunSeeRa
|
||||
HSunApparentRa = 180 + HSunApparentRa
|
||||
} else if tmp >= 180 && tmp < 270 {
|
||||
HSunSeeRa = 180 + HSunSeeRa
|
||||
HSunApparentRa = 180 + HSunApparentRa
|
||||
} else if tmp >= 270 && tmp <= 360 {
|
||||
HSunSeeRa = 360 + HSunSeeRa
|
||||
HSunApparentRa = 360 + HSunApparentRa
|
||||
}
|
||||
return HSunSeeRa, HSunSeeDec
|
||||
return HSunApparentRa, HSunApparentDec
|
||||
}
|
||||
|
||||
func HSunSeeRa(JD float64) float64 { // '太阳视赤经
|
||||
func HSunApparentRa(JD float64) float64 { // '太阳视赤经
|
||||
T := (JD - 2451545) / 36525
|
||||
sitas := Sita(JD) + 0.00256*Cos(125.04-1934.136*T)
|
||||
tmp := HSunSeeLo(JD)
|
||||
HSunSeeRa := ArcTan(Cos(sitas) * Sin(tmp) / Cos(tmp))
|
||||
tmp := HSunApparentLo(JD)
|
||||
HSunApparentRa := ArcTan(Cos(sitas) * Sin(tmp) / Cos(tmp))
|
||||
if tmp >= 90 && tmp < 180 {
|
||||
HSunSeeRa = 180 + HSunSeeRa
|
||||
HSunApparentRa = 180 + HSunApparentRa
|
||||
} else if tmp >= 180 && tmp < 270 {
|
||||
HSunSeeRa = 180 + HSunSeeRa
|
||||
HSunApparentRa = 180 + HSunApparentRa
|
||||
} else if tmp >= 270 && tmp <= 360 {
|
||||
HSunSeeRa = 360 + HSunSeeRa
|
||||
HSunApparentRa = 360 + HSunApparentRa
|
||||
}
|
||||
return HSunSeeRa
|
||||
return HSunApparentRa
|
||||
}
|
||||
|
||||
func HSunTrueRa(JD float64) float64 { //'太阳真赤经
|
||||
@@ -980,11 +980,11 @@ func HSunTrueRa(JD float64) float64 { //'太阳真赤经
|
||||
return HSunTrueRa
|
||||
}
|
||||
|
||||
func HSunSeeDec(JD float64) float64 { // '太阳视赤纬
|
||||
func HSunApparentDec(JD float64) float64 { // '太阳视赤纬
|
||||
T := (JD - 2451545) / 36525
|
||||
sitas := EclipticObliquity(JD, false) + 0.00256*Cos(125.04-1934.136*T)
|
||||
HSunSeeDec := ArcSin(Sin(sitas) * Sin(HSunSeeLo(JD)))
|
||||
return HSunSeeDec
|
||||
HSunApparentDec := ArcSin(Sin(sitas) * Sin(HSunApparentLo(JD)))
|
||||
return HSunApparentDec
|
||||
}
|
||||
|
||||
func HSunTrueDec(JD float64) float64 { // '太阳真赤纬
|
||||
@@ -1089,7 +1089,7 @@ func GetJQTime(Year, Angle int) float64 { //节气时间
|
||||
}
|
||||
|
||||
func JQLospec(JD float64) float64 {
|
||||
t := HSunSeeLo(JD)
|
||||
t := HSunApparentLo(JD)
|
||||
if t <= 12 {
|
||||
t += 360
|
||||
}
|
||||
@@ -1097,7 +1097,7 @@ func JQLospec(JD float64) float64 {
|
||||
}
|
||||
|
||||
func GetXC(jd float64) string { //十二次
|
||||
tlo := HSunSeeLo(jd)
|
||||
tlo := HSunApparentLo(jd)
|
||||
if tlo >= 255 && tlo < 285 {
|
||||
return "星纪"
|
||||
} else if tlo >= 285 && tlo < 315 {
|
||||
@@ -1185,7 +1185,7 @@ func GetBanTime(JD, Lon, Lat, TZ, An float64) float64 {
|
||||
if SunHeight(tztime+0.5, Lon, Lat, ntz) > An {
|
||||
return -1 //极昼
|
||||
}
|
||||
tmp := (Sin(An) - Sin(HSunSeeDec(tztime))*Sin(Lat)) / (Cos(HSunSeeDec(tztime)) * Cos(Lat))
|
||||
tmp := (Sin(An) - Sin(HSunApparentDec(tztime))*Sin(Lat)) / (Cos(HSunApparentDec(tztime)) * Cos(Lat))
|
||||
var sundown float64
|
||||
if math.Abs(tmp) <= 1 && Lat < 85 {
|
||||
rzsc := ArcCos(tmp) / 15
|
||||
@@ -1224,7 +1224,7 @@ func GetAsaTime(JD, Lon, Lat, TZ, An float64) float64 {
|
||||
if SunHeight(tztime-0.5, Lon, Lat, ntz) > An {
|
||||
return -1 //极昼
|
||||
}
|
||||
tmp := (Sin(An) - Sin(HSunSeeDec(tztime))*Sin(Lat)) / (Cos(HSunSeeDec(tztime)) * Cos(Lat))
|
||||
tmp := (Sin(An) - Sin(HSunApparentDec(tztime))*Sin(Lat)) / (Cos(HSunApparentDec(tztime)) * Cos(Lat))
|
||||
var sunrise float64
|
||||
if math.Abs(tmp) <= 1 && Lat < 85 {
|
||||
rzsc := ArcCos(tmp) / 15
|
||||
@@ -1257,8 +1257,8 @@ func GetAsaTime(JD, Lon, Lat, TZ, An float64) float64 {
|
||||
* 太阳时角
|
||||
*/
|
||||
func SunTimeAngle(JD, Lon, Lat, TZ float64) float64 {
|
||||
startime := Limit360(SeeStarTime(JD-TZ/24)*15 + Lon)
|
||||
timeangle := startime - HSunSeeRa(TD2UT(JD-TZ/24, true))
|
||||
startime := Limit360(ApparentSiderealTime(JD-TZ/24)*15 + Lon)
|
||||
timeangle := startime - HSunApparentRa(TD2UT(JD-TZ/24, true))
|
||||
if timeangle < 0 {
|
||||
timeangle += 360
|
||||
}
|
||||
@@ -1284,7 +1284,7 @@ func GetSunRiseTime(JD, Lon, Lat, TZ, ZS, HEI float64) float64 {
|
||||
return -1 //极昼
|
||||
}
|
||||
//(sin(ho)-sin(φ)*sin(δ2))/(cos(φ)*cos(δ2))
|
||||
tmp := (Sin(An) - Sin(HSunSeeDec(tztime))*Sin(Lat)) / (Cos(HSunSeeDec(tztime)) * Cos(Lat))
|
||||
tmp := (Sin(An) - Sin(HSunApparentDec(tztime))*Sin(Lat)) / (Cos(HSunApparentDec(tztime)) * Cos(Lat))
|
||||
var sunrise float64
|
||||
if math.Abs(tmp) <= 1 && Lat < 85 {
|
||||
rzsc := ArcCos(tmp) / 15
|
||||
@@ -1328,7 +1328,7 @@ func GetSunDownTime(JD, Lon, Lat, TZ, ZS, HEI float64) float64 {
|
||||
if SunHeight(tztime+0.5, Lon, Lat, ntz) > An {
|
||||
return -1 //极昼
|
||||
}
|
||||
tmp := (Sin(An) - Sin(HSunSeeDec(tztime))*Sin(Lat)) / (Cos(HSunSeeDec(tztime)) * Cos(Lat))
|
||||
tmp := (Sin(An) - Sin(HSunApparentDec(tztime))*Sin(Lat)) / (Cos(HSunApparentDec(tztime)) * Cos(Lat))
|
||||
var sundown float64
|
||||
if math.Abs(tmp) <= 1 && Lat < 85 {
|
||||
rzsc := ArcCos(tmp) / 15
|
||||
@@ -1365,8 +1365,8 @@ func SunHeight(JD, Lon, Lat, TZ float64) float64 {
|
||||
//truejd := JD - tmp/24
|
||||
calcjd := JD - TZ/24.0
|
||||
tjde := TD2UT(calcjd, true)
|
||||
st := Limit360(SeeStarTime(calcjd)*15 + Lon)
|
||||
ra, dec := HSunSeeRaDec(tjde)
|
||||
st := Limit360(ApparentSiderealTime(calcjd)*15 + Lon)
|
||||
ra, dec := HSunApparentRaDec(tjde)
|
||||
H := Limit360(st - ra)
|
||||
tmp2 := Sin(Lat)*Sin(dec) + Cos(dec)*Cos(Lat)*Cos(H)
|
||||
return ArcSin(tmp2)
|
||||
@@ -1375,9 +1375,9 @@ func LowSunHeight(JD, Lon, Lat, TZ float64) float64 {
|
||||
//tmp := (TZ*15 - Lon) * 4 / 60
|
||||
//truejd := JD - tmp/24
|
||||
calcjd := JD - TZ/24
|
||||
st := Limit360(SeeStarTime(calcjd)*15 + Lon)
|
||||
H := Limit360(st - SunSeeRa(TD2UT(calcjd, true)))
|
||||
dec := SunSeeDec(TD2UT(calcjd, true))
|
||||
st := Limit360(ApparentSiderealTime(calcjd)*15 + Lon)
|
||||
H := Limit360(st - SunApparentRa(TD2UT(calcjd, true)))
|
||||
dec := SunApparentDec(TD2UT(calcjd, true))
|
||||
tmp2 := Sin(Lat)*Sin(dec) + Cos(dec)*Cos(Lat)*Cos(H)
|
||||
return ArcSin(tmp2)
|
||||
}
|
||||
@@ -1385,9 +1385,9 @@ func SunAngle(JD, Lon, Lat, TZ float64) float64 {
|
||||
//tmp := (TZ*15 - Lon) * 4 / 60
|
||||
//truejd := JD - tmp/24
|
||||
calcjd := JD - TZ/24
|
||||
st := Limit360(SeeStarTime(calcjd)*15 + Lon)
|
||||
H := Limit360(st - HSunSeeRa(TD2UT(calcjd, true)))
|
||||
tmp2 := Sin(H) / (Cos(H)*Sin(Lat) - Tan(HSunSeeDec(TD2UT(calcjd, true)))*Cos(Lat))
|
||||
st := Limit360(ApparentSiderealTime(calcjd)*15 + Lon)
|
||||
H := Limit360(st - HSunApparentRa(TD2UT(calcjd, true)))
|
||||
tmp2 := Sin(H) / (Cos(H)*Sin(Lat) - Tan(HSunApparentDec(TD2UT(calcjd, true)))*Cos(Lat))
|
||||
Angle := ArcTan(tmp2)
|
||||
if Angle < 0 {
|
||||
if H/15 < 12 {
|
||||
|
||||
Reference in New Issue
Block a user