Navigation part of the RawTurtle. Implements methods for turtle movement.
| 1569 | onkeyrelease = onkey |
| 1570 | |
| 1571 | class TNavigator(object): |
| 1572 | """Navigation part of the RawTurtle. |
| 1573 | Implements methods for turtle movement. |
| 1574 | """ |
| 1575 | START_ORIENTATION = { |
| 1576 | "standard": Vec2D(1.0, 0.0), |
| 1577 | "world" : Vec2D(1.0, 0.0), |
| 1578 | "logo" : Vec2D(0.0, 1.0) } |
| 1579 | DEFAULT_MODE = "standard" |
| 1580 | DEFAULT_ANGLEOFFSET = 0 |
| 1581 | DEFAULT_ANGLEORIENT = 1 |
| 1582 | |
| 1583 | def __init__(self, mode=DEFAULT_MODE): |
| 1584 | self._angleOffset = self.DEFAULT_ANGLEOFFSET |
| 1585 | self._angleOrient = self.DEFAULT_ANGLEORIENT |
| 1586 | self._mode = mode |
| 1587 | self.undobuffer = None |
| 1588 | self.degrees() |
| 1589 | self._mode = None |
| 1590 | self._setmode(mode) |
| 1591 | TNavigator.reset(self) |
| 1592 | |
| 1593 | def reset(self): |
| 1594 | """reset turtle to its initial values |
| 1595 | |
| 1596 | Will be overwritten by parent class |
| 1597 | """ |
| 1598 | self._position = Vec2D(0.0, 0.0) |
| 1599 | self._orient = TNavigator.START_ORIENTATION[self._mode] |
| 1600 | |
| 1601 | def _setmode(self, mode=None): |
| 1602 | """Set turtle-mode to 'standard', 'world' or 'logo'. |
| 1603 | """ |
| 1604 | if mode is None: |
| 1605 | return self._mode |
| 1606 | if mode not in ["standard", "logo", "world"]: |
| 1607 | return |
| 1608 | self._mode = mode |
| 1609 | if mode in ["standard", "world"]: |
| 1610 | self._angleOffset = 0 |
| 1611 | self._angleOrient = 1 |
| 1612 | else: # mode == "logo": |
| 1613 | self._angleOffset = self._fullcircle/4. |
| 1614 | self._angleOrient = -1 |
| 1615 | |
| 1616 | def _setDegreesPerAU(self, fullcircle): |
| 1617 | """Helper function for degrees() and radians()""" |
| 1618 | self._fullcircle = fullcircle |
| 1619 | self._degreesPerAU = 360/fullcircle |
| 1620 | if self._mode == "standard": |
| 1621 | self._angleOffset = 0 |
| 1622 | else: |
| 1623 | self._angleOffset = fullcircle/4. |
| 1624 | |
| 1625 | def degrees(self, fullcircle=360.0): |
| 1626 | """ Set angle measurement units to degrees. |
| 1627 | |
| 1628 | Optional argument: |
nothing calls this directly
no test coverage detected
searching dependent graphs…