我有多个速度(公里/小时)和时间(日期)的记录,我想知道总行驶距离是多少。时间和速度在变化。有没有这方面的java算法?
问问题
1759 次
4 回答
1
只需计算每对结果的值:
distance = previousVelocity * timeDifference + (currentVelocity - previousVelocity) * timeDifference / 2
哪里timeDifference = currentTime - previousTime
。
然后总结一下就可以了。这是假设恒定的加速和减速。
于 2013-02-11T13:02:48.553 回答
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。
您的算法需要对每对数据点执行相同的计算,并将总行驶距离相加。
于 2013-02-11T13:13:37.557 回答
0
对此没有预定义的“Java 算法”。您必须通过将 all 相加来计算整个距离ds = v * dt
。ds
是增量距离,v
是速度和dt
增量时间。一个循环就可以了。除此之外,您可以确定平均速度并进行一次乘法运算。
于 2013-02-11T12:51:33.113 回答
0
本质上,您需要绘制点之间的曲线(x 轴 = 时间,y 轴 = 速度)并计算该图下的面积。显然,这将取决于您选择的插值(直线、贝塞尔曲线、三次样条等)
这看起来像是一个有趣的插值库列表。
似乎还有一个javax.media.jai.Interpolation组件可用。
于 2013-02-11T13:00:51.047 回答