Python 将二维向量转换为小时数

Python 将二维向量转换为小时数,python,numpy,vector,time,Python,Numpy,Vector,Time,我有一个二维向量hour\u向量,它代表时钟的小手,我想转换这个向量来显示它所指示的小时 例如,向量[0,1]表示时钟上的“12:00”,或者向量[1,0]表示“3:00”。类似地,向量[1,1]显示“1:30”,[2,2]和[10,10]也显示“1:30”,即指向同一方向的不同长度的向量表示同一时间 我开始计算两个向量之间的角度(一个是原点),但我不确定从这里开始: 将numpy导入为np def角度(a、b): 点积=圆形(np.点(a,b),1) 角度=圆形(np.度(np.arccos(

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

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

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

将numpy导入为np
def角度(a、b):
点积=圆形(np.点(a,b),1)
角度=圆形(np.度(np.arccos(点积/(np.linalg.norm(a)*np.linalg.norm(b))),1)
返回角
打印(角点(np.数组([0,1.])、np.数组([1,0.]))
## 90.0

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

ang=angle(a,b)#获取0到360之间的向量角度
小时=ang/360.0*12.0#按浮动比例缩放到小时(即90.0->3.0)
hour_str=f'{int(hour):02}:{int((hour*60)%60):02}'
对于45度角,这些值为:

ang=45.0
小时=1.5
小时长度='01:30'