code: def _projection(self, a, b, c):
          
          ab = b - a
          ac = c - a
          return a + ((ab*ac).sum() / (ac*ac).sum()) * ac
docs: Return projection of (a,b) onto (a,c)
          Arguments are point locations, not indexes.