Break this vector into one vector that is perpendicular to the 
        given vector and another that is parallel to it.

def get_components(self, other):
        """ Break this vector into one vector that is perpendicular to the 
        given vector and another that is parallel to it. """
        tangent = self.get_projection(other)
        normal = self - tangent
        return normal, tangent