docs: def _repoint(self, *args):
          """Recalculate points, y-intercept, and slope"""
          if None in (self.origin, self.destination):
              Clock.schedule_once(self._repoint, 0)
              return
          try:
              (self.trunk_points, self.head_points) = self._get_points()
          except ValueError:
              self.trunk_points = self.head_points = []
              return
          (ox, oy, dx, dy) = self.trunk_points
          r = self.w / 2
          bgr = r * self.bg_scale_selected if self.selected \
              else self.bg_scale_unselected
          self.trunk_quad_vertices_bg = get_thin_rect_vertices(
              ox, oy, dx, dy, bgr
          )
          self.collider = Collide2DPoly(self.trunk_quad_vertices_bg)
          self.trunk_quad_vertices_fg = get_thin_rect_vertices(ox, oy, dx, dy, r)
          (x1, y1, endx, endy, x2, y2) = self.head_points
          self.left_head_quad_vertices_bg = get_thin_rect_vertices(
              x1, y1, endx, endy, bgr
          )
          self.right_head_quad_vertices_bg = get_thin_rect_vertices(
              x2, y2, endx, endy, bgr
          )
          self.left_head_quad_vertices_fg = get_thin_rect_vertices(
              x1, y1, endx, endy, r
          )
          self.right_head_quad_vertices_fg = get_thin_rect_vertices(
              x2, y2, endx, endy, r
          )
          self.slope = self._get_slope()
          self.y_intercept = self._get_b()
          self.repointed = True