带有svg图形的月球阶段在Node js中



我正在寻找可以实现的方法/npm软件包:

  1. 月期
  2. SVG或月相的任何图形表示
  3. 该日期的照明

我尝试过:Suncalc但是,在此软件包中,SunCalc.getMoonIllumination()满足照明和相位,但从阶段开始说是否满月很棘手。它没有图形表示。

我认为没有SVG随附的软件包,因此您需要自己来源/生产。

为了让Suncalc为您提供一个不错的数字,该阶段实际位于00.250.50.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;

为什么这起作用?为什么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个工作,因为有两个原因:

  1. 4是28的因素。因此,有些数字会以.25的倍数返回
  2. 因为它接近几天内的月球周期的长度(〜29.53(

这意味着我们最终将结果四舍五入到每个值大约一天

最新更新