code: def rotation_matrix(self, angle):
          
          squeeze_out = (np.shape(angle) == ())
          angle = np.array(angle, dtype=float, copy=False, ndmin=1)
          if (self.check_bounds and
                  not is_inside_bounds(angle, self.motion_params)):
              raise ValueError('`angle` {} not in the valid range {}'
                               ''.format(angle, self.motion_params))
  
          matrix = axis_rotation_matrix(self.axis, angle)
          if squeeze_out:
              matrix = matrix.squeeze()
  
          return matrix
docs: Return the rotation matrix to the system state at ``angle``.
  
          The matrix is computed according to
          `Rodrigues' rotation formula
          <https://en.wikipedia.org/wiki/Rodrigues'_rotation_formula>`_.
  
          Parameters
          ----------
          angle : float or `array-like`
              Angle(s) in radians describing the counter-clockwise
              rotation of the system around `axis`.
  
          Returns
          -------
          rot : `numpy.ndarray`
              The rotation matrix (or matrices) mapping vectors at the
              initial state to the ones in the state defined by ``angle``.
              The rotation is extrinsic, i.e., defined in the "world"
              coordinate system.
              If ``angle`` is a single parameter, the returned array has
              shape ``(3, 3)``, otherwise ``angle.shape + (3, 3)``.