code: def stretch(self, q1, q2):
          
          if self.base is None:
              colors.printc('~times Error in stretch(): Please define vectors \
                            actor.base and actor.top at creation. Exit.', c='r')
              exit(0)
  
          p1, p2 = self.base, self.top
          q1, q2, z = np.array(q1), np.array(q2), np.array([0, 0, 1])
          plength = np.linalg.norm(p2 - p1)
          qlength = np.linalg.norm(q2 - q1)
          T = vtk.vtkTransform()
          T.PostMultiply()
          T.Translate(-p1)
          cosa = np.dot(p2 - p1, z) / plength
          n = np.cross(p2 - p1, z)
          T.RotateWXYZ(np.arccos(cosa) * 57.3, n)
  
          T.Scale(1, 1, qlength / plength)
  
          cosa = np.dot(q2 - q1, z) / qlength
          n = np.cross(q2 - q1, z)
          T.RotateWXYZ(-np.arccos(cosa) * 57.3, n)
          T.Translate(q1)
  
          self.SetUserMatrix(T.GetMatrix())
          if self.trail:
              self.updateTrail()
          return self
docs: Stretch actor between points `q1` and `q2`. Mesh is not affected.
  
          .. hint:: |aspring| |aspring.py|_
  
          .. note:: for ``Actors`` like helices, Line, cylinders, cones etc.,
              two attributes ``actor.base``, and ``actor.top`` are already defined.