Skip to content

Commit b94d548

Browse files
authored
Merge pull request #44 from FoamyGuy/circle_and_dot_fix
make circle and dot always use degrees internally
2 parents 63a6ffb + 591b805 commit b94d548

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

adafruit_turtle.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,12 @@ def circle(
640640
# --or: circle(radius, extent) # arc
641641
# --or: circle(radius, extent, steps)
642642
# --or: circle(radius, steps=6) # 6-sided polygon
643+
change_back = False
644+
if not self._in_degrees():
645+
change_back = True
646+
original_mode = "standard" if not self._logomode else "logo"
647+
self.degrees()
648+
self.mode("standard")
643649
pos = self.pos()
644650
h = self._heading
645651
if extent is None:
@@ -661,6 +667,9 @@ def circle(
661667
# get back to exact same position and heading
662668
self.goto(pos)
663669
self.setheading(h)
670+
if change_back:
671+
self.radians()
672+
self.mode(original_mode)
664673

665674
# pylint:disable=inconsistent-return-statements
666675
def speed(self, speed: Optional[int] = None) -> Optional[int]:
@@ -704,6 +713,13 @@ def dot(self, size: Optional[int] = None, color: Optional[int] = None) -> None:
704713
:param color: the color of the dot
705714
706715
"""
716+
change_back = False
717+
if not self._in_degrees():
718+
change_back = True
719+
original_mode = "standard" if not self._logomode else "logo"
720+
print(f"old mode: {original_mode}")
721+
self.degrees()
722+
self.mode("standard")
707723
if size is None:
708724
size = max(self._pensize + 4, self._pensize * 2)
709725
if color is None:
@@ -727,6 +743,9 @@ def dot(self, size: Optional[int] = None, color: Optional[int] = None) -> None:
727743
self._pensize = 1
728744
self._plot(self._x, self._y, color)
729745
self._pensize = pensize
746+
if change_back:
747+
self.radians()
748+
self.mode(original_mode)
730749

731750
def stamp(
732751
self,
@@ -896,6 +915,10 @@ def degrees(self, fullcircle: float = 360) -> None:
896915
"""
897916
self._setDegreesPerAU(fullcircle)
898917

918+
def _in_degrees(self) -> bool:
919+
print(self._degreesPerAU)
920+
return self._degreesPerAU == 1.0
921+
899922
def radians(self) -> None:
900923
"""Set the angle measurement units to radians.
901924
Equivalent to degrees(2*math.pi)."""

0 commit comments

Comments
 (0)