Ejemplo n.º 1
0
def _parse_rotate(s):
    rotate = _float_list(s)
    if len(rotate) == 4: # around axis
        return Quaternion.new_rotate_axis(rotate[0] / 180. * math.pi,
                                                  Vector3(*vector[1:]))
    else:
        x, y, z = [ i / 180. * math.pi for i in rotate ]
        return Quaternion.new_rotate_euler(y, z, x)
Ejemplo n.º 2
0
 def tick(self, time):
     self.current_time += time
     fraction = self.current_time / self.total_time # part of animation done
     if fraction > 1:
         fraction = 1
     current_rotation = Quaternion.new_interpolate(self.start_rotation,
                                                   self.dest_rotation,
                                                   fraction)
     self.object.rotation = current_rotation
     return fraction != 1 # continue animation iff it is not completed
Ejemplo n.º 3
0
 def _compute_time(self):
     if self.req_time:
         return self.req_time
     else:
         angle = Quaternion.angle_between(self.start_rotation, self.dest_rotation)
         return angle / self.req_speed
Ejemplo n.º 4
0
    def tick(self, elapsed):
        self.angle += self.angular_speed * elapsed
        self.camera.eye += Quaternion.new_rotate_axis(self.angle, Vector3(0, 0, 1)) * self.speed * elapsed

        self._update()
Ejemplo n.º 5
0
 def _update(self):
     direction = Quaternion.new_rotate_axis(self.angle, Vector3(0, 0, 1)) * Vector3(1, 0, 0)
     self.camera.center = self.camera.eye + direction