public static double GetSpeed(IPosInfo p1, IPosInfo p2) { var distance = GetDistance(p1, p2); var time = p2.DateTimeStamp - p1.DateTimeStamp; var speed = distance / time * 1000; if (time > 60000)//两个点的时间差大于60s,则不用考虑距离,中间待机了 { speed = 0; } return(Math.Abs(speed));//p1和p2的时间可能反了 }
public PosDistance(IPosInfo p1, IPosInfo p2) { this.p1 = p1; this.p2 = p2; //distance = Math.Pow((p1.X - p2.X) * (p1.X - p2.X) + (p1.Y - p2.Y) * (p1.Y - p2.Y) + (p1.Z - p2.Z) * (p1.Z - p2.Z), 0.5); distance = PosDistanceUtil.GetDistance(p1, p2); time = Math.Abs(p2.DateTimeStamp - p1.DateTimeStamp); speed = distance / time * 1000; if (time > 60000)//两个点的时间差大于60s,则不用考虑距离,中间待机了 { speed = 0; } }
public static double GetDistance(IPosInfo p1, IPosInfo p2) { var distance = Math.Pow((p1.X - p2.X) * (p1.X - p2.X) + (p1.Y - p2.Y) * (p1.Y - p2.Y) + (p1.Z - p2.Z) * (p1.Z - p2.Z), 0.5); return(distance); }