速度(KM / h)と時間(日付)のレコードが複数あります。総移動距離を知りたいのですが。時間と速度は変化しています。このためのJavaアルゴリズムはありますか?
4 に答える
速度と時間のデータ ポイントがある場合は、ポイント間の平均速度を計算し (これは正確ではないかもしれませんが、データで実行できる最善の方法です)、時間を掛ける必要があります。時間測定として秒を使用したことに注意してください。あなたは日付を持っていると言っているので、簡単に変換できるはずです。時間が近い場合は、おそらくミリ秒を使用するのが最善です。
次のデータ ポイントがあるとします。
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 に変換しています。
アルゴリズムは、データ ポイントの各ペアで同じ計算を実行し、移動した合計距離を合計する必要があります。
結果として生じる値のペアごとに、次のように計算するだけです。
distance = previousVelocity * timeDifference + (currentVelocity - previousVelocity) * timeDifference / 2
どこでtimeDifference = currentTime - previousTime
。
次に、すべてを合計してください。これは、一定の加速と減速を前提としています。
基本的に、ポイント間の曲線 (x 軸 = 時間、y 軸 = 速度) をプロットし、そのグラフの下の面積を計算する必要があります。明らかに、これは補間の選択 (直線、ベジェ曲線、3 次スプラインなど) によって異なります。
これは、補間ライブラリの興味深いリストのように見えます。
javax.media.jai.Interpolationコンポーネントも利用できるようです。
このための定義済みの「Java アルゴリズム」はありません。all を合計して全体の距離を計算する必要がありますds = v * dt
。ds
はデルタ距離、v
は速度とdt
デルタ時間です。ループはうまくいきます。それ以外に、平均速度を決定し、1 つの乗算を行うことができます。