diff --git a/python/port/mod/turtle/turtle.cpp b/python/port/mod/turtle/turtle.cpp index d580e7007..8d33928ec 100644 --- a/python/port/mod/turtle/turtle.cpp +++ b/python/port/mod/turtle/turtle.cpp @@ -73,7 +73,7 @@ void Turtle::left(mp_float_t angle) { void Turtle::circle(mp_int_t radius, mp_float_t angle) { mp_float_t oldHeading = heading(); - mp_float_t length = (angle > 0 ? 1 : -1) * angle * k_headingScale * radius; + mp_float_t length = (angle > 0 ? 1 : -1) * angle * k_headingScale * (radius > 0 ? 1 : -1) * radius; if (length > 1) { for (int i = 1; i < length; i++) { mp_float_t progress = i / length; @@ -82,7 +82,7 @@ void Turtle::circle(mp_int_t radius, mp_float_t angle) { // Keyboard interruption. Return now to let MicroPython process it. return; } - setHeadingPrivate(oldHeading+angle*progress); + setHeadingPrivate(oldHeading+angle*progress*((radius>0) ? 1 : -1)); } forward(1); setHeading(oldHeading+angle);