Navigation part of the RawTurtle. Implements methods for turtle movement.
| 1407 | onkeyrelease = onkey |
| 1408 | |
| 1409 | class TNavigator(object): |
| 1410 | """Navigation part of the RawTurtle. |
| 1411 | Implements methods for turtle movement. |
| 1412 | """ |
| 1413 | START_ORIENTATION = { |
| 1414 | "standard": Vec2D(1.0, 0.0), |
| 1415 | "world" : Vec2D(1.0, 0.0), |
| 1416 | "logo" : Vec2D(0.0, 1.0) } |
| 1417 | DEFAULT_MODE = "standard" |
| 1418 | DEFAULT_ANGLEOFFSET = 0 |
| 1419 | DEFAULT_ANGLEORIENT = 1 |
| 1420 | |
| 1421 | def __init__(self, mode=DEFAULT_MODE): |
| 1422 | self._angleOffset = self.DEFAULT_ANGLEOFFSET |
| 1423 | self._angleOrient = self.DEFAULT_ANGLEORIENT |
| 1424 | self._mode = mode |
| 1425 | self.undobuffer = None |
| 1426 | self.degrees() |
| 1427 | self._mode = None |
| 1428 | self._setmode(mode) |
| 1429 | TNavigator.reset(self) |
| 1430 | |
| 1431 | def reset(self): |
| 1432 | """reset turtle to its initial values |
| 1433 | |
| 1434 | Will be overwritten by parent class |
| 1435 | """ |
| 1436 | self._position = Vec2D(0.0, 0.0) |
| 1437 | self._orient = TNavigator.START_ORIENTATION[self._mode] |
| 1438 | |
| 1439 | def _setmode(self, mode=None): |
| 1440 | """Set turtle-mode to 'standard', 'world' or 'logo'. |
| 1441 | """ |
| 1442 | if mode is None: |
| 1443 | return self._mode |
| 1444 | if mode not in ["standard", "logo", "world"]: |
| 1445 | return |
| 1446 | self._mode = mode |
| 1447 | if mode in ["standard", "world"]: |
| 1448 | self._angleOffset = 0 |
| 1449 | self._angleOrient = 1 |
| 1450 | else: # mode == "logo": |
| 1451 | self._angleOffset = self._fullcircle/4. |
| 1452 | self._angleOrient = -1 |
| 1453 | |
| 1454 | def _setDegreesPerAU(self, fullcircle): |
| 1455 | """Helper function for degrees() and radians()""" |
| 1456 | self._fullcircle = fullcircle |
| 1457 | self._degreesPerAU = 360/fullcircle |
| 1458 | if self._mode == "standard": |
| 1459 | self._angleOffset = 0 |
| 1460 | else: |
| 1461 | self._angleOffset = fullcircle/4. |
| 1462 | |
| 1463 | def degrees(self, fullcircle=360.0): |
| 1464 | """ Set angle measurement units to degrees. |
| 1465 | |
| 1466 | Optional argument: |