如何将24小时制时间转换为mz3d插件的太阳旋转角度值?
解决方案
计算逻辑
- 先将当前时间转换为带分钟小数的小时值,避免整小时跳变,角度过渡更平滑
- 按照需求12点对应0度、0/24点对应180度的规则,每小时对应角度变化为
180度 / 12小时 = 15度/小时 - 计算当前时间与12点的差值的绝对值,乘以15即可得到符合要求的太阳旋转值
完整修改后代码
//variables var d = new Date(); var hr = d.getHours(); var mn = d.getMinutes(); //conversion var totalHour = hr + mn / 60; var sun = Math.abs((totalHour - 12) * 15); // 可选兜底:如果插件要求角度必须限制在0-180之间,可保留下面一行 sun = Math.min(Math.max(sun, 0), 180); //mz3d command mz3d.command('sun pitch', sun, 0);
验证示例
你可以用几个时间点验证计算结果是否符合要求:
- 00:00 → 总小时0 →
|0-12|*15 = 180度✅ - 06:30 → 总小时6.5 →
|6.5-12|*15 = 82.5度✅ - 12:00 → 总小时12 →
|12-12|*15 = 0度✅ - 18:00 → 总小时18 →
|18-12|*15 = 90度✅ - 23:59 → 总小时≈23.98 →
|23.98-12|*15≈179.7度✅
内容的提问来源于stack exchange,提问作者Titanor Soulstone
相关产品推荐
相关产品推荐

