节点js中带有svg图形的月相
Moon phase with svg graphics in node js
我正在寻找可以实现的方法/npm包:
- 月相
- SVG 或月相的任何图形表示
- 该日期的照明
我试过:
suncalc
但是在这个包中 SunCalc.getMoonIllumination()
满足照明和相位但是从相位说它是否是满月是很棘手的。而且它没有图形表示。
我认为没有 SVG 附带的软件包,因此您需要自己采购/制作这些软件包。
至于让 SunCalc 为实际位于 0
、0.25
、0.5
或 0.75
的阶段提供一个不错的数字,最简单的是做一些舍入:
如果您想直接四舍五入到这些数字,您可以四舍五入到最近的四分之一:
var date = new Date();
Math.round(SunCalc.getMoonIllumination(date).phase * 4) / 4;
或者(如您在评论中指定的那样)如果您希望它仍然通过 waxing/waning 部分并坚持满月/新月/四分之一大约一天,您可以四舍五入到最近的第 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 有效,因为有两个原因:
- 4 是 28 的因数。所以有些数字会以 .25 的倍数返回
- 因为它接近月球周期的长度(~29.53)天数
这意味着我们最终将结果四舍五入到每个值大约一天
我正在寻找可以实现的方法/npm包:
- 月相
- SVG 或月相的任何图形表示
- 该日期的照明
我试过:
suncalc
但是在这个包中 SunCalc.getMoonIllumination()
满足照明和相位但是从相位说它是否是满月是很棘手的。而且它没有图形表示。
我认为没有 SVG 附带的软件包,因此您需要自己采购/制作这些软件包。
至于让 SunCalc 为实际位于 0
、0.25
、0.5
或 0.75
的阶段提供一个不错的数字,最简单的是做一些舍入:
如果您想直接四舍五入到这些数字,您可以四舍五入到最近的四分之一:
var date = new Date();
Math.round(SunCalc.getMoonIllumination(date).phase * 4) / 4;
或者(如您在评论中指定的那样)如果您希望它仍然通过 waxing/waning 部分并坚持满月/新月/四分之一大约一天,您可以四舍五入到最近的第 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 有效,因为有两个原因:
- 4 是 28 的因数。所以有些数字会以 .25 的倍数返回
- 因为它接近月球周期的长度(~29.53)天数
这意味着我们最终将结果四舍五入到每个值大约一天