code: def pan_delta(self, dx_px, dy_px):
          
          direction = self.target - self.position
          distance_from_target = direction.length()
          direction = direction.normalized()
  
          speed_per_radius = self.get_translation_speed(distance_from_target)
          px_per_unit = self.vport_radius_px / speed_per_radius
  
          right = direction ^ self.up
  
          translation = (right * (-dx_px / px_per_unit) +
                         self.up * (-dy_px / px_per_unit))
  
          self.position = self.position + translation
          self.target = self.target + translation
docs: This causes the scene to appear to translate right and up
          (i.e., what really happens is the camera is translated left and down).
          This is also called "panning" in some software packages.
          Passing in negative delta values causes the opposite motion.