code: def on_timer(self, event):
      self.theta += 0.5
      self.phi += 0.5
      self.cube_transform.reset()
      self.cube_transform.rotate(self.theta, (0, 0, 1))
      self.cube_transform.rotate(self.phi, (0, 1, 0))
      self.cube_transform.scale((100, 100, 0.001))
      self.cube_transform.translate((200, 200))
      self.update()
  
file_path: vispy/examples/basics/visuals/rotating_box.py
imports: import sys
  from vispy import app, gloo
  from vispy.visuals import BoxVisual, transforms
label_desc: Use image node_id 4 for calling the Canvas obj's underlying member method code with example usage: obj.on_timer(event) without return types