code: def from_euler(self, roll, pitch, yaw):
          '''fill the matrix from Euler angles in radians'''
          cp = cos(pitch)
          sp = sin(pitch)
          sr = sin(roll)
          cr = cos(roll)
          sy = sin(yaw)
          cy = cos(yaw)
  
          self.a.x = cp * cy
          self.a.y = (sr * sp * cy) - (cr * sy)
          self.a.z = (cr * sp * cy) + (sr * sy)
          self.b.x = cp * sy
          self.b.y = (sr * sp * sy) + (cr * cy)
          self.b.z = (cr * sp * sy) - (sr * cy)
          self.c.x = -sp
          self.c.y = sr * cp
          self.c.z = cr * cf from_euler(self, roll, pitch, yaw):
          '''fill the matrix from Euler angles in radians'''
          cp = cos(pitch)
          sp = sin(pitch)
          sr = sin(roll)
          cr = cos(roll)
          sy = sin(yaw)
          cy = cos(yaw)
  
          self.a.x = cp * cy
          self.a.y = (sr * sp * cy) - (cr * sy)
          self.a.z = (cr * sp * cy) + (sr * sy)
          self.b.x = cp * sy
          self.b.y = (sr * sp * sy) + (cr * cy)
          self.b.z = (cr * sp * sy) - (sr * cy)
          self.c.x = -sp
          self.c.y = sr * cp
          self.c.z = cr * cp
docs: fill the matrix from Euler angles in radians