0

我有多个速度(公里/小时)和时间(日期)的记录,我想知道总行驶距离是多少。时间和速度在变化。有没有这方面的java算法?

4

4 回答 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 * dtds是增量距离,v是速度和dt增量时间。一个循环就可以了。除此之外,您可以确定平均速度并进行一次乘法运算。

于 2013-02-11T12:51:33.113 回答
0

本质上,您需要绘制点之间的曲线(x 轴 = 时间,y 轴 = 速度)并计算该图下的面积。显然,这将取决于您选择的插值(直线、贝塞尔曲线、三次样条等)

看起来像是一个有趣的插值库列表。

似乎还有一个javax.media.jai.Interpolation组件可用。

于 2013-02-11T13:00:51.047 回答