parameters: (self, poses, ts=[], tlim=[-numpy.inf, numpy.inf], repeat=False,
               interp='cubic_natural')
docstring: Plays back camera path animation specified by poses
  
          Args:
              poses: Key poses. e.g. a list of 6-tuples (x, y, z, phi, theta, r)
                  poses, or anything convertible to a 6-column array by np.array
              ts (optional): Key pose times. If unspecified key poses are placed
                  at 1 second intervals.
              tlim (optional): Play back time range (in seconds)
              repeat (optional): Toggles infinite play back loop.  Works well
                  with interp='cubic_periodic'.
              interp (optional): Interpolation method.  Should be one of
                  'constant', 'linear', 'cubic_natural', or 'cubic_periodic'.
  
          Examples:
  
          Rotate camera about origin at 1/8 Hz.
  
          >>> poses = []
          >>> poses.append([0, 0, 0, 0 * np.pi/2, np.pi/4, 5])
          >>> poses.append([0, 0, 0, 1 * np.pi/2, np.pi/4, 5])
          >>> poses.append([0, 0, 0, 2 * np.pi/2, np.pi/4, 5])
          >>> poses.append([0, 0, 0, 3 * np.pi/2, np.pi/4, 5])
          >>> poses.append([0, 0, 0, 4 * np.pi/2, np.pi/4, 5])
          >>> v.play(poses, 2 * np.arange(5), repeat=True, interp='linear')
function: def play(self, poses, ts=[], tlim=[-numpy.inf, numpy.inf], repeat=False,
               interp='cubic_natural'):
          """
  
          Plays back camera path animation specified by poses
  
          Args:
              poses: Key poses. e.g. a list of 6-tuples (x, y, z, phi, theta, r)
                  poses, or anything convertible to a 6-column array by np.array
              ts (optional): Key pose times. If unspecified key poses are placed
                  at 1 second intervals.
              tlim (optional): Play back time range (in seconds)
              repeat (optional): Toggles infinite play back loop.  Works well
                  with interp='cubic_periodic'.
              interp (optional): Interpolation method.  Should be one of
                  'constant', 'linear', 'cubic_natural', or 'cubic_periodic'.
  
          Examples:
  
          Rotate camera about origin at 1/8 Hz.
  
          >>> poses = []
          >>> poses.append([0, 0, 0, 0 * np.pi/2, np.pi/4, 5])
          >>> poses.append([0, 0, 0, 1 * np.pi/2, np.pi/4, 5])
          >>> poses.append([0, 0, 0, 2 * np.pi/2, np.pi/4, 5])
          >>> poses.append([0, 0, 0, 3 * np.pi/2, np.pi/4, 5])
          >>> poses.append([0, 0, 0, 4 * np.pi/2, np.pi/4, 5])
          >>> v.play(poses, 2 * np.arange(5), repeat=True, interp='linear')
  
          """
          poses, ts = _fix_poses_ts_input(poses, ts)
          if poses.size == 0:
              return
          msg = struct.pack('b', 8) \
              + struct.pack('i', poses.shape[0]) + poses.tostring() \
              + struct.pack('i', ts.size) + ts.tostring() \
              + struct.pack('b', _interp_code[interp])
          self.__send(msg)
          msg = struct.pack('b', 9) \
              + struct.pack('2f', *tlim) \
              + struct.pack('?', repeat)
          self.__send(msg)
function_tokens: def play ( self , poses , ts = [ ] , tlim = [ - numpy . inf , numpy . inf ] , repeat = False , interp = 'cubic_natural' ) : poses , ts = _fix_poses_ts_input ( poses , ts ) if poses . size == 0 : return msg = struct . pack ( 'b' , 8 ) + struct . pack ( 'i' , poses . shape [ 0 ] ) + poses . tostring ( ) + struct . pack ( 'i' , ts . size ) + ts . tostring ( ) + struct . pack ( 'b' , _interp_code [ interp ] ) self . __send ( msg ) msg = struct . pack ( 'b' , 9 ) + struct . pack ( '2f' , * tlim ) + struct . pack ( '?' , repeat ) self . __send ( msg )