code: def to_euler312(self):
          '''find Euler angles (312 convention) for the matrix.
          See http://www.atacolorado.com/eulersequences.doc
          '''
          T21 = self.a.y
          T22 = self.b.y
          T23 = self.c.y
          T13 = self.c.x
          T33 = self.c.z
          yaw = atan2(-T21, T22)
          roll = asin(T23)
          pitch = atan2(-T13, T33)
          return (roll, pitch, yawf to_euler312(self):
          '''find Euler angles (312 convention) for the matrix.
          See http://www.atacolorado.com/eulersequences.doc
          '''
          T21 = self.a.y
          T22 = self.b.y
          T23 = self.c.y
          T13 = self.c.x
          T33 = self.c.z
          yaw = atan2(-T21, T22)
          roll = asin(T23)
          pitch = atan2(-T13, T33)
          return (roll, pitch, yaw)
docs: find Euler angles (312 convention) for the matrix.
          See http://www.atacolorado.com/eulersequences.doc