我一直在尝试在圆圈的帮助下开发时钟控制。因此,如果圆是 360 度,则为 3 点钟,如果是 90 度,则为 12 点钟。如果我有圆的角度,我不知道可以使用什么公式以 hh:mm 格式查找时间。
例如。
9点钟是180度。3 点钟是 360 度,12 点钟是 90 度,依此类推。
可能有一种更简洁的方法可以做到这一点,但这就是你需要做的。
java中的一个示例实现:
public static String convertAngleToTimeString(float angle) {
String time = "";
float decimalValue = 3.0f - (1.0f/30.0f) * (angle % 360);
if (decimalValue < 0)
decimalValue += 12.0f;
int hours = (int)decimalValue;
if (hours == 0)
hours = 12;
time += (hours < 10 ? "0" + hours: hours) + ":";
int minutes = (int)(decimalValue * 60) % 60;
time += minutes < 10 ? "0" + minutes: minutes;
return time;
}
您可以在 Wikipedia 上查看这些公式,它们可能会有所帮助:http ://en.wikipedia.org/wiki/Clock_angle_problem
但除此之外,你可以做一些简单的事情,比如度/360 * 12. + 偏移。
例如,如果我们将 360 度设置为 12 点钟方向,而您有 90 度。你会得到。90/360 * 12 = 3。所以那是 3 点钟。然后你可以添加你的偏移量,在你的情况下是 3 所以它是 6 点钟。
首先假设 12 点是 0 度。这是有道理的,因为当昼夜不停地转动一次时度数只会增加,小时数也会增加(没有环绕),所以也许我们可以将小时数乘以一个常数。
为了让它在 12 点再次达到 360,我们需要将小时乘以 360/12 = 30。
所以现在 3 点钟是 90 度,而 12 点钟是 0 度。
减去 90,我们在 0 点有 3 点钟,在 -90 点有 12 点钟。
然后将其设为负值,根据需要,我们在 0 点有 3 点钟,在 90 点有 12 点钟。
我们开始了,现在你只需要将它们放在一起。
hrs= date +%H
#H >> min= date +%M
#min >> dim= echo "scale=2; $hrs * 60 + $min" | bc
#day in minutes >> dis= echo "scale=2; $dim * 60 + $sec" | bc
#day in seconds >> did= echo "scale=2; $dis / 240" | bc
#day in degree >>
行星公转为每 240 秒 1 度。
我致力于制作 sumerian-time-sys 。一个苏美尔小时相当于两个当前 HRS 或 30 转度。寻找六十进制系统。玩得开心!