code: def _q_bar_matrix(self):
          
          return np.array([
              [self.q[0], -self.q[1], -self.q[2], -self.q[3]],
              [self.q[1],  self.q[0],  self.q[3], -self.q[2]],
              [self.q[2], -self.q[3],  self.q[0],  self.q[1]],
              [self.q[3],  self.q[2], -self.q[1],  self.q[0]]])
docs: Matrix representation of quaternion for multiplication purposes.