code: def from_euler312(self, roll, pitch, yaw):
          '''fill the matrix from Euler angles in radians in 312 convention'''
          c3 = cos(pitch)
          s3 = sin(pitch)
          s2 = sin(roll)
          c2 = cos(roll)
          s1 = sin(yaw)
          c1 = cos(yaw)
  
          self.a.x = c1 * c3 - s1 * s2 * s3
          self.b.y = c1 * c2
          self.c.z = c3 * c2
          self.a.y = -c2*s1
          self.a.z = s3*c1 + c3*s2*s1
          self.b.x = c3*s1 + s3*s2*c1
          self.b.z = s1*s3 - s2*c1*c3
          self.c.x = -s3*c2
          self.c.y = sf from_euler312(self, roll, pitch, yaw):
          '''fill the matrix from Euler angles in radians in 312 convention'''
          c3 = cos(pitch)
          s3 = sin(pitch)
          s2 = sin(roll)
          c2 = cos(roll)
          s1 = sin(yaw)
          c1 = cos(yaw)
  
          self.a.x = c1 * c3 - s1 * s2 * s3
          self.b.y = c1 * c2
          self.c.z = c3 * c2
          self.a.y = -c2*s1
          self.a.z = s3*c1 + c3*s2*s1
          self.b.x = c3*s1 + s3*s2*c1
          self.b.z = s1*s3 - s2*c1*c3
          self.c.x = -s3*c2
          self.c.y = s2
docs: fill the matrix from Euler angles in radians in 312 convention