From a036bff2758e32a08baba9b4042c5bed9a4ddb9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Mon, 11 Feb 2019 12:05:36 +0100 Subject: [PATCH] [python/turtle] Fix setHeadingPrivate (handle big angle errors) --- python/port/mod/turtle/turtle.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/python/port/mod/turtle/turtle.cpp b/python/port/mod/turtle/turtle.cpp index dfc8f90fc..48d66c173 100644 --- a/python/port/mod/turtle/turtle.cpp +++ b/python/port/mod/turtle/turtle.cpp @@ -194,8 +194,13 @@ void Turtle::viewDidDisappear() { void Turtle::setHeadingPrivate(mp_float_t angle) { // Put the angle in [0; 360[ mp_float_t angleLimit = 360; - m_heading = angle - ((angle >= 0 && angle < angleLimit) ? 0 : std::floor(angle/angleLimit) * angleLimit); - assert(m_heading >= 0 && m_heading < angleLimit); + mp_float_t angleBetween0And360 = angle - ((angle >= 0 && angle < angleLimit) ? 0 : std::floor(angle/angleLimit) * angleLimit); + if (angleBetween0And360 >= 0 && angleBetween0And360 < angleLimit) { + m_heading = angleBetween0And360; + } else { + // When angle is too big, our formula does not put it properly in [0; 360[ + m_heading = 0; + } } KDPoint Turtle::position(mp_float_t x, mp_float_t y) const {