code: def alignLandmarks(source, target, rigid=False):
      
      lmt = vtk.vtkLandmarkTransform()
      ss = source.polydata().GetPoints()
      st = target.polydata().GetPoints()
      if source.N() != target.N():
          vc.printc('~times Error in alignLandmarks(): Source and Target with != nr of points!',
                    source.N(), target.N(), c=1)
          exit()
      lmt.SetSourceLandmarks(ss)
      lmt.SetTargetLandmarks(st)
      if rigid:
          lmt.SetModeToRigidBody()
      lmt.Update()
      tf = vtk.vtkTransformPolyDataFilter()
      tf.SetInputData(source.polydata())
      tf.SetTransform(lmt)
      tf.Update()
      actor = Actor(tf.GetOutput())
      actor.info["transform"] = lmt
      pr = vtk.vtkProperty()
      pr.DeepCopy(source.GetProperty())
      actor.SetProperty(pr)
      return actor
docs: Find best matching of source points towards target
      in the mean least square sense, in one single step.