diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp index b405e0d52..68aeac99a 100644 --- a/Marlin/planner.cpp +++ b/Marlin/planner.cpp @@ -1242,22 +1242,15 @@ void Planner::_buffer_line(const float &a, const float &b, const float &c, const v_entry *= v_factor; } // Calculate jerk depending on whether the axis is coasting in the same direction or reversing. - float jerk = - (v_exit > v_entry) ? - ((v_entry > 0.f || v_exit < 0.f) ? - // coasting - (v_exit - v_entry) : - // axis reversal - max(v_exit, -v_entry)) : - // v_exit <= v_entry - ((v_entry < 0.f || v_exit > 0.f) ? - // coasting - (v_entry - v_exit) : - // axis reversal - max(-v_exit, v_entry)); + const float jerk = (v_exit > v_entry) + ? // coasting axis reversal + ( (v_entry > 0.f || v_exit < 0.f) ? (v_exit - v_entry) : max(v_exit, -v_entry) ) + : // v_exit <= v_entry coasting axis reversal + ( (v_entry < 0.f || v_exit > 0.f) ? (v_entry - v_exit) : max(-v_exit, v_entry) ); + if (jerk > max_jerk[axis]) { v_factor *= max_jerk[axis] / jerk; - limited = true; + ++limited; } } if (limited) vmax_junction *= v_factor;