From 98382fcea559020e6e0e242fe22f59c9c151a4c4 Mon Sep 17 00:00:00 2001
From: Bo Herrmannsen <bo.herrmannsen@gmail.com>
Date: Fri, 13 Dec 2019 00:13:49 +0100
Subject: [PATCH] Include Z in SCARA steps feedrate (#16193)

---
 Marlin/src/module/planner.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp
index c95426154f..50a9beb4d2 100644
--- a/Marlin/src/module/planner.cpp
+++ b/Marlin/src/module/planner.cpp
@@ -2620,13 +2620,15 @@ bool Planner::buffer_line(const float &rx, const float &ry, const float &rz, con
     if (mm == 0.0)
       mm = (delta_mm_cart.x != 0.0 || delta_mm_cart.y != 0.0) ? delta_mm_cart.magnitude() : ABS(delta_mm_cart.z);
 
+    // Cartesian XYZ to kinematic ABC, stored in global 'delta'
     inverse_kinematics(machine);
 
     #if ENABLED(SCARA_FEEDRATE_SCALING)
       // For SCARA scale the feed rate from mm/s to degrees/s
       // i.e., Complete the angular vector in the given time.
       const float duration_recip = inv_duration ?: fr_mm_s / mm;
-      const feedRate_t feedrate = HYPOT(delta.a - position_float.a, delta.b - position_float.b) * duration_recip;
+      const xyz_pos_t diff = delta - position_float;
+      const feedRate_t feedrate = diff.magnitude() * duration_recip;
     #else
       const feedRate_t feedrate = fr_mm_s;
     #endif
-- 
GitLab