diff --git a/python/port/mod/turtle/turtle.cpp b/python/port/mod/turtle/turtle.cpp index 00568492b..e5bb0c39d 100644 --- a/python/port/mod/turtle/turtle.cpp +++ b/python/port/mod/turtle/turtle.cpp @@ -75,20 +75,20 @@ void Turtle::circle(mp_int_t radius, mp_float_t angle) { mp_float_t oldHeading = heading(); mp_float_t length = std::fabs(angle * k_headingScale * radius); int direction = 1; // 1=fwd, -1=backward - if (angle < 0) {direction =-1;} - if (length > 1) { - for (int i = 1; i < length; i++) { - mp_float_t progress = i / length; - // Move the turtle forward - if (forward(direction)) { - // Keyboard interruption. Return now to let MicroPython process it. - return; - } - setHeadingPrivate(oldHeading+std::copysign(angle*progress, direction*radius)); + if (angle < 0) { direction =-1; } + if (length > 1) { + for (int i = 1; i < length; i++) { + mp_float_t progress = i / length; + // Move the turtle forward + if (forward(direction)) { + // Keyboard interruption. Return now to let MicroPython process it. + return; } - forward(direction); - setHeading(oldHeading+std::copysign(angle, direction*radius)); + setHeadingPrivate(oldHeading+std::copysign(angle*progress, direction*radius)); } + forward(direction); + setHeading(oldHeading+std::copysign(angle, direction*radius)); + } }