我有一个包含大量点(按时间排序的经度和纬度)的GPX文件,如何计算其中包含多少圈?
这个GPS记录了赛车会话期间的数据。
圈数是指车辆通过赛道起点/终点的次数。
P = (x(i) - Cx) * (y(i+1) - Cy) + (x(i+1) - Cx) * (y(i) - Cy)
如果P为正,则观察者逆时针旋转,如果为负则顺时针旋转。观察者旋转的角度为
theta(i, i+1) = arcsin(P / (length(x(i) - C) * length(x(i+1) - C)))
这里我们假设相邻的点彼此靠近,因此观察者在相邻点之间仅旋转了小于pi/2的小角度。
要找到观察者旋转的总量,只需将所有theta从路径开始到结束相加,确保保留theta的符号以防车辆出现倒退情况。假设theta以弧度为单位,则总圈数就是theta之和除以2 * pi。
对于真正的极客来说,这只是使用定义计算车辆绕C路径的绕组数。