我正在寻找可以实现的方法/ npm包:
我试过了:
suncalc
但是在这个包中,SunCalc.getMoonIllumination()
满足了光照和阶段,但从相位说起,如果它是满月或不是很棘手。它没有图形表示。
答案 0 :(得分:3)
我不认为SVG附带有软件包,因此您需要自己提供/生成这些软件包。
至于让SunCalc为0
,0.25
,0.5
或0.75
实际上所处的阶段提供一个很好的数字,最简单是做一些舍入:
如果您想直接对这些数字进行舍入,可以舍入到最近的四分之一:
var date = new Date();
Math.round(SunCalc.getMoonIllumination(date).phase * 4) / 4;
或者(正如你在评论中指出的那样)如果你想让它仍然通过打蜡/减弱部分并坚持满月/新月/季度大约一天,你可以四舍五入到最近的第28位:
var date = new Date();
Math.round(SunCalc.getMoonIllumination(date).phase * 28) / 28;
因此,最简单的解释方法是再次查看季度示例。我们希望舍入的数字与其中一个选项(0, 0.25, 0.5, 0.75
)匹配。
因为Math.round
舍入到最接近的整数,我们希望这些结果成为我们可以舍入的整数。通过将它们乘以4得到:
0 * 4 = 0
0.25 * 4 = 1
0.5 * 4 = 2
0.75 * 4 = 3
我们在这些之间得到的所有东西最终会四舍五入到其中一个(除了一些圆到5,我们需要自己缠绕)。
然后我们将结果除以相同的乘数,以使数字回到预期的范围内。
现在有28个作品,原因有两个:
这意味着我们最终将结果四舍五入到每个值大约一天