From a225f49209dacc21dc70d579afb6d5aea04409b9 Mon Sep 17 00:00:00 2001 From: starainrt Date: Fri, 13 Aug 2021 14:26:08 +0800 Subject: [PATCH] important bug fix:infinite recursion occurs on constellation calculation --- basic/star.go | 11 ++++------- basic/star_test.go | 9 ++++++++- tools/math.go | 7 ++----- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/basic/star.go b/basic/star.go index d553cab..9c7ef54 100644 --- a/basic/star.go +++ b/basic/star.go @@ -141,17 +141,14 @@ func init() { CstLists["VIR"] = []cst{cst{174.35052458333, -0.6916979}, cst{174.36568791667, 10.3082914}, cst{179.60373458333, 10.3040485}, cst{179.60453541667, 13.3040485}, cst{194.0620275, 13.3225126}, cst{194.05906625, 14.3225088}, cst{204.02893041667, 14.3604937}, cst{204.06384875, 7.3605771}, cst{227.78148625, 7.5253930}, cst{227.85301208333, -0.4742887}, cst{221.6030925, -0.5269387}, cst{221.66710791667, -8.5266848}, cst{215.40850625, -8.5731344}, cst{215.51309125, -22.5727749}, cst{194.16687, -22.6773415}, cst{194.1330525, -11.6773882}, cst{179.09676, -11.6957970}, cst{179.09860625, -6.6957974}, cst{174.34229875, -6.6916924}} CstLists["VOL"] = []cst{cst{98.93724875, -64.1070251}, cst{98.454422916667, -70.1041336}, cst{97.770709583333, -75.1000366}, cst{114.21470375, -75.2899170}, cst{135.24368708333, -75.4954681}, cst{136.09472708333, -64.4990387}, cst{102.70331375, -64.1518784}} CstLists["VUL"] = []cst{cst{284.33913291667, 21.2478352}, cst{284.27716208333, 25.6641407}, cst{290.16131375, 25.7325745}, cst{290.13264625, 27.7324085}, cst{296.27220125, 27.8011742}, cst{296.25094375, 29.3010578}, cst{315.07258375, 29.4871387}, cst{315.08391458333, 28.4871883}, cst{322.62016375, 28.5480537}, cst{322.66201958333, 24.0482101}, cst{320.15170041667, 24.0289364}, cst{320.18840875, 20.0290813}, cst{317.17878291667, 20.0046406}, cst{309.907665, 19.9399967}, cst{309.89693708333, 20.9399471}, cst{305.13404875, 20.8936996}, cst{305.12540875, 21.6436558}, cst{298.860255, 21.5787334}, cst{298.88568875, 19.4955387}, cst{290.12128791667, 19.3982983}, cst{290.09631125, 21.3148155}} - change := []string{"PSC", "TUC", "PHE", "SCL", "CET", "PEG", "AND", "CAS", "CEP"} for _, v := range change { for k, v2 := range CstLists[v] { if v2.RA < 270 { CstLists[v][k].RA = v2.RA + 360 } - } } - } //选定 RA=277.5 DEC=-40 @@ -192,11 +189,11 @@ func isCross(a, b, c, d cst) bool { func IsXZ(ra, dec, jde float64) string { var nra, ndec float64 nra = ra - if ra > 360 { - nra = ra - 360 + if ra >= 360 { + nra -= 360 } nra, ndec = ZuoBiaoSuiCha(nra, dec, jde, 2451545.0) - if ra > 360 && nra < 300 { + if ra >= 360 && nra < 270 { nra += 360 } for k, v := range CstLists { @@ -221,7 +218,7 @@ func IsXZ(ra, dec, jde float64) string { return k } } - if nra <= 360 { + if nra <= 270 { ra = ra + 360 return IsXZ(ra, dec, jde) } diff --git a/basic/star_test.go b/basic/star_test.go index 9a4debb..9264eff 100644 --- a/basic/star_test.go +++ b/basic/star_test.go @@ -1,9 +1,16 @@ package basic import ( + "fmt" "testing" ) func Test_Isxz(t *testing.T) { - + now := GetNowJDE() + for i := 0.00; i <= 360.00; i+=0.5 { + for j := -90.00; j <= 90.00; j+=0.5 { + fmt.Println(i, j) + fmt.Println(WhichCst(float64(i), float64(j), now)) + } + } } diff --git a/tools/math.go b/tools/math.go index 1a28de2..ca91d05 100644 --- a/tools/math.go +++ b/tools/math.go @@ -1,9 +1,7 @@ package tools import ( - "fmt" "math" - "strconv" ) func Sin(x float64) float64 { @@ -31,9 +29,8 @@ func ArcTan(x float64) float64 { } func FloatRound(f float64, n int) float64 { - format := "%." + strconv.Itoa(n) + "f" - res, _ := strconv.ParseFloat(fmt.Sprintf(format, f), 64) - return res + p := math.Pow10(n) + return math.Floor(f*p+0.5) / p } func Limit360(x float64) float64 {