3

我一直在尝试在圆圈的帮助下开发时钟控制。因此,如果圆是 360 度,则为 3 点钟,如果是 90 度,则为 12 点钟。如果我有圆的角度,我不知道可以使用什么公式以 hh:mm 格式查找时间。

例如。

9点钟是180度。3 点钟是 360 度,12 点钟是 90 度,依此类推。

4

4 回答 4

3

可能有一种更简洁的方法可以做到这一点,但这就是你需要做的。

  1. 计算时间的十进制值,使用 3 - (1/30) * (angle mod 360)
  2. 如果结果小于零,则加 12。
  3. 将整数部分用作小时,将值 0 替换为 12。
  4. 取余数(第 1 步计算的小数部分)并乘以 60 转换为分钟。
  5. 格式化您的小时和分钟,如果小于 10,则使用前导零填充,并将它们与冒号组合。

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;
}
于 2013-09-27T19:02:05.310 回答
2

您可以在 Wikipedia 上查看这些公式,它们可能会有所帮助:http ://en.wikipedia.org/wiki/Clock_angle_problem

但除此之外,你可以做一些简单的事情,比如度/360 * 12. + 偏移。

例如,如果我们将 360 度设置为 12 点钟方向,而您有 90 度。你会得到。90/360 * 12 = 3。所以那是 3 点钟。然后你可以添加你的偏移量,在你的情况下是 3 所以它是 6 点钟。

于 2013-09-27T17:41:01.727 回答
1

首先假设 12 点是 0 度。这是有道理的,因为当昼夜不停地转动一次时度数只会增加,小时数也会增加(没有环绕),所以也许我们可以将小时数乘以一个常数。

为了让它在 12 点再次达到 360,我们需要将小时乘以 360/12 = 30

所以现在 3 点钟是 90 度,而 12 点钟是 0 度。

减去 90,我们在 0 点有 3 点钟,在 -90 点有 12 点钟。

然后将其设为负值,根据需要,我们在 0 点有 3 点钟,在 90 点有 12 点钟。

我们开始了,现在你只需要将它们放在一起。

于 2013-09-27T17:39:16.553 回答
0

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 转度。寻找六十进制系统。玩得开心!

于 2016-12-17T19:31:04.520 回答