'Add a rotation (in radians) to this transform in place.
Returns *self*, so this method can easily be chained with more
calls to :meth:`rotate`, :meth:`rotate_deg`, :meth:`translate`
and :meth:`scale`.'

def rotate(self, theta):

    a = np.cos(theta)
    b = np.sin(theta)
    rotate_mtx = np.array([[a, (- b), 0.0], [b, a, 0.0], [0.0, 0.0, 1.0]], float)
    self._mtx = np.dot(rotate_mtx, self._mtx)
    self.invalidate()
    return self
