我试着从一些轨迹中得到旋转的角度。我有一个数据框,如下所示:
TRACK_ID POSITION_X POSITION_Y POSITION_T
0 1 12.3550 9.7230 0.000
1 1 12.2365 9.7232 0.055
2 1 12.2360 9.9560 0.110
3 1 12.1570 9.9950 0.165
4 1 12.2370 10.1350 0.220
5 1 12.3100 9.8210 0.275
6 1 12.5600 9.6810 0.330
7 1 12.4860 9.6520 0.385
8 1 12.2990 9.8360 0.440
9 1 12.3170 9.8300 0.495
10 1 12.3060 9.7880 0.550
11 1 12.2810 9.7560 0.605
12 1 12.4050 9.7610 0.660
13 1 12.5380 9.7470 0.715
这给了我如下轨迹:
为方便起见,前两段的角度约为180˚和90˚(如果我们使用逆时针方向)
我的代码成功地测量了第一个段,但当段超过180˚时,我仍然发现一些错误:
df = pd.read_csv('coordinates.csv')
coords=['POSITION_X', 'POSITION_Y']
diff = df[coords].shift(-1) - df[coords] #segments
m = (diff['POSITION_Y']/diff['POSITION_X']) #slopes
df['angles'] = np.degrees(np.arctan(m)) #angles
df['new'] = df['angles'].apply(lambda x: 180 + x if(x<0) else x)
其输出为:
TRACK_ID POSITION_X POSITION_Y POSITION_T angles new
0 1 12.3550 9.7230 0.000 -0.096702 179.903298
1 1 12.2365 9.7232 0.055 -89.876942 90.123058
2 1 12.2360 9.9560 0.110 -26.274212 153.725788
3 1 12.1570 9.9950 0.165 60.255119 60.255119
4 1 12.2370 10.1350 0.220 -76.912133 103.087867
5 1 12.3100 9.8210 0.275 -29.248826 150.751174
6 1 12.5600 9.6810 0.330 21.399810 21.399810
7 1 12.4860 9.6520 0.385 -44.536702 135.463298
8 1 12.2990 9.8360 0.440 -18.434949 161.565051
9 1 12.3170 9.8300 0.495 75.323607 75.323607
10 1 12.3060 9.7880 0.550 52.001268 52.001268
11 1 12.2810 9.7560 0.605 2.309063 2.309063
12 1 12.4050 9.7610 0.660 -6.009006 173.990994
13 1 12.5380 9.7470 0.715 NaN NaN
在“新”列中,我们在第5段有第一个错误(值103.087867),因为角度必须大于270˚ 我的问题是如何逆时针测量角度? 提前谢谢
目前没有回答
相关问题 更多 >
编程相关推荐