【问题标题】:Converting a 2d vector to hours将二维向量转换为小时
【发布时间】:2021-02-08 23:08:51
【问题描述】:

我有一个二维向量hour_vector,它代表时钟的小指针,我想转换这个向量以显示它所指示的小时。

例如,向量[0, 1] 表示时钟上的“12:00”,或者向量[1, 0] 表示“3:00”。同样,向量[1, 1] 显示“1:30”,[2,2][10,10] 也是如此,即指向同一方向的不同长度的向量表示相同的时间。

我首先计算两个向量之间的角度(一个是原点),但我不确定从这里开始:

import numpy as np

def angle(a, b):
    dot_product = round(np.dot(a, b), 1)
    angle = round(np.degrees(np.arccos(dot_product / (np.linalg.norm(a) * np.linalg.norm(b)))), 1)
    return angle

print(angle_dot(np.array([0., 1.]), np.array([1., 0.])))
## 90.0

【问题讨论】:

    标签: python numpy vector time


    【解决方案1】:

    计算出角度后,您只需将这些角度映射到小时范围内,这非常简单,因为它们都从 0 开始。尝试:

    ang = angle(a, b) # Get angle of the vector between 0..360
    
    hour = ang / 360.0 * 12.0 # Scales to hour as float (i.e. 90.0 -> 3.0)
    
    hour_str = f'{int(hour):02}:{int((hour * 60) % 60):02}'
    

    对于 45 度角,这些值为:

    ang = 45.0
    hour = 1.5
    hour_str = '01:30'
    

    【讨论】:

      猜你喜欢
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多