changeset 130:b10c6eaed9e2

rotate
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Wed, 09 Jul 2014 19:10:11 +0000
parents 62a59cad5ccd
children 6617b34e4047
files kubik.py rotate.py squats.py
diffstat 3 files changed, 24 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/kubik.py	Wed Jul 09 17:43:19 2014 +0000
+++ b/kubik.py	Wed Jul 09 19:10:11 2014 +0000
@@ -111,12 +111,13 @@
         """Rotate the leg around the center of the body horizontally."""
         radians = math.radians(degrees)
         x, y, z = self.position
-        bx, by = self.base[0] + x, self.base[1] - y * self.y_direction
+        bx = self.base[0] + x
+        by = self.base[1] + y * self.y_direction
         r = _length(bx, by)
         a = math.atan2(bx, by)
         rx = r * math.sin(a + radians) - self.base[0]
         ry = r * math.cos(a + radians) - self.base[1]
-        self.move_to((rx, -ry * self.y_direction, None))
+        self.move_to((rx, ry * self.y_direction, None))
 
     def update(self):
         hip, knee, ankle = self._inverse_kinematics(self.position)
--- a/rotate.py	Wed Jul 09 17:43:19 2014 +0000
+++ b/rotate.py	Wed Jul 09 19:10:11 2014 +0000
@@ -1,20 +1,30 @@
 import kubik
 
+
 STEP = -10
 STRIDE = 20
-SWING = 10
-SWING_SPEED = 1
+SWING = 12
+SWING_SPEED = 4
 SPEED = 1
 HEIGHT = -35
+OVERLAP = 2
 FPS = 12
 
 
 def swing(robot):
     pause = STRIDE / SPEED + 3 - SWING * 2 / SWING_SPEED
+    first = True
     while True:
+        if first:
+            start = SWING_SPEED;
+            first = False
+            for i in range(0, SWING, SWING_SPEED):
+                yield
+        else:
+            start = -SWING
         for i in range(pause):
             yield
-        for i in range(-SWING, SWING, SWING_SPEED):
+        for i in range(start, SWING, SWING_SPEED):
             for l1, l2 in zip(robot.legs[:2], robot.legs[2:]):
                 l1.move_by((-SWING_SPEED, 0, 0))
                 l2.move_by((SWING_SPEED, 0, 0))
@@ -39,6 +49,7 @@
         leg.rotate(STRIDE * side)
         if not first:
             leg.rotate(STRIDE * side)
+            pass
         else:
             first = False
         for i in range(2):
@@ -48,15 +59,16 @@
             leg.rotate(-SPEED * side)
             yield
 
+
 if __name__ == '__main__':
     robot = kubik.Robot()
     robot.home()
     delay = (2 * STRIDE / SPEED + 6) / 4
     animations = [
-#        swing(robot),
-        rotate(robot.legs[0], 1, 0 * delay),
-        rotate(robot.legs[1], -1, 1 * delay),
-        rotate(robot.legs[3], -1, 2 * delay),
-        rotate(robot.legs[2], 1, 3 * delay),
+        swing(robot),
+        rotate(robot.legs[0], 1, 0 * delay + OVERLAP),
+        rotate(robot.legs[1], -1, 1 * delay - OVERLAP),
+        rotate(robot.legs[3], -1, 2 * delay + OVERLAP),
+        rotate(robot.legs[2], 1, 3 * delay - OVERLAP),
     ]
     robot.run_animations(animations, FPS)
--- a/squats.py	Wed Jul 09 17:43:19 2014 +0000
+++ b/squats.py	Wed Jul 09 19:10:11 2014 +0000
@@ -16,7 +16,7 @@
                 yield
         for i in range(-25, -35, -1):
             for leg in robot.legs:
-                leg[0].move_to((20, 0, i))
+                leg.move_to((20, 0, i))
                 yield
         for i in range(0, 20):
             robot.legs[0].move_to((20 - i, 0, -35))