将二维向量转换为小时数

2024-10-03 17:25:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

Tags: normnpproduct时钟array向量dot指向
1条回答
网友
1楼 · 发布于 2024-10-03 17:25:35

计算角度后,只需将这些角度映射到小时范围,这非常简单,因为它们都从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'

相关问题 更多 >