code: def rotate_arrows(self, point_towards):
      direction_vectors = (self.grid_coords - point_towards).astype(
          np.float32
      )
      norms = np.sqrt(np.sum(direction_vectors**2, axis=-1))
      direction_vectors[:, 0] /= norms
      direction_vectors[:, 1] /= norms
  
      vertices = np.repeat(self.grid_coords, 2, axis=0)
      vertices[::2] = vertices[::2] + (
          (0.5 * self.arrow_length) * direction_vectors
      )
      vertices[1::2] = vertices[1::2] - (
          (0.5 * self.arrow_length) * direction_vectors
      )
  
      self.visual.set_data(
          pos=vertices,
          arrows=vertices.reshape((len(vertices) // 2, 4)),
      )
  
file_path: vispy/examples/basics/visuals/arrows_quiver.py
imports: from __future__ import division
  import sys
  import itertools
  import numpy
  from vispy import app, gloo, visuals
  from vispy.visuals.transforms import NullTransform
label_desc: Use image node_id 4 for calling the Canvas obj's underlying member method code with example usage: obj.rotate_arrows(point_towards) without return types