我有多个速度(以KM / h为单位)和时间(在日期中)的记录,我想知道旅行的总距离是多少。时间和速度正在发生变化。这有没有java algorythm?
答案 0 :(得分:1)
只需计算每个随后的一对值:
distance = previousVelocity * timeDifference + (currentVelocity - previousVelocity) * timeDifference / 2
timeDifference = currentTime - previousTime
。
然后总结一下,然后你去。这是假设恒定的加速和减速。
答案 1 :(得分:1)
如果你有速度和时间的数据点,你需要计算点之间的平均速度(这可能不准确,但它是你可以用数据做的最好的)并乘以时间。请注意,我使用秒作为时间测量。你说你有日期,所以你应该能够轻松转换,如果你的时间很接近,可能最好使用毫秒。
假设您有以下数据点;
Time speed
0 12
4 15
7 13
11 18
17 21
第1点和第2点之间的平均速度是;
12 + 15 / 2 = 13.5
,时差为4秒。您可以做出的最佳计算是这些数据点之间的距离为
4 * 13.5 * (1000 / 3600) = 15 metres
(1000/3600)位将km / h转换为m / s。
您的算法需要对每对数据点执行相同的计算,并累计行进的总距离。
答案 2 :(得分:0)
此处没有预定义的“Java算法”。您必须通过将所有ds = v * dt
相加来计算整个距离。 ds
是增量距离,v
是速度和dt
增量时间。循环会很好。
除此之外,您可以确定平均速度并进行一次乘法。
答案 3 :(得分:0)
基本上,您需要绘制点之间的曲线(x轴=时间,y轴=速度)并计算该图下的面积。显然这取决于您选择的插值(直线,贝塞尔曲线,三次样条等)。
This看起来像一个有趣的插值库列表。
似乎还有一个javax.media.jai.Interpolation组件。