diff --git "a/bve-autopilot/\345\210\266\345\213\225\345\207\272\345\212\233.cpp" "b/bve-autopilot/\345\210\266\345\213\225\345\207\272\345\212\233.cpp" index f09319e..4b802fc 100644 --- "a/bve-autopilot/\345\210\266\345\213\225\345\207\272\345\212\233.cpp" +++ "b/bve-autopilot/\345\210\266\345\213\225\345\207\272\345\212\233.cpp" @@ -57,19 +57,23 @@ namespace autopilot return; } - // 加速度が大きく変化している間はノッチ当たり減速度を再計算しない - if (std::abs(加速状態.加加速度()) > mps_from_kmph(1)) { - return; - } - // 減速していなければノッチ当たり減速度を再計算しない 加速度型 減速度 = -加速状態.加速度(); if (減速度 <= 0) { return; } - // ノッチ当たり減速度を再計算する + // 加速度が大きく前回結果に近付いていっている間は再計算しない int 実効ノッチ = 前回出力ノッチ - _無効ノッチ数; + 加速度型 逆算減速度 = 実効ノッチ * _ノッチ当たり減速度; + if (加速状態.加加速度() > mps_from_kmph(1) && 減速度 > 逆算減速度) { + return; + } + if (加速状態.加加速度() < mps_from_kmph(1) && 減速度 < 逆算減速度) { + return; + } + + // ノッチ当たり減速度を再計算する _ノッチ当たり減速度 = 減速度 / 実効ノッチ; }