Skip to content

Commit

Permalink
[1.1.x] Fix for G2/G3 rounding error (MarlinFirmware#15546)
Browse files Browse the repository at this point in the history
  • Loading branch information
edwilliams16 authored and thinkyhead committed Oct 13, 2019
1 parent 1d44b10 commit 5754472
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion Marlin/Marlin_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3707,7 +3707,8 @@ inline void gcode_G0_G1(
const float e = clockwise ^ (r < 0) ? -1 : 1, // clockwise -1/1, counterclockwise 1/-1
dx = p2 - p1, dy = q2 - q1, // X and Y differences
d = HYPOT(dx, dy), // Linear distance between the points
h = SQRT(sq(r) - sq(d * 0.5f)), // Distance to the arc pivot-point
h2 = (r - 0.5f * d) * (r + 0.5f * d), // factor to reduce rounding error
h = (h2 >= 0) ? SQRT(h2) : 0.0f, // Distance to the arc pivot-point
mx = (p1 + p2) * 0.5f, my = (q1 + q2) * 0.5f, // Point between the two points
sx = -dy / d, sy = dx / d, // Slope of the perpendicular bisector
cx = mx + e * h * sx, cy = my + e * h * sy; // Pivot-point of the arc
Expand Down

0 comments on commit 5754472

Please sign in to comment.