Из комментариев я понял, что вы правильно понимаете матрицу вращения, но хотите, чтобы вращение происходило на другой оси.Например, ваша матрица вращается вокруг z, но вы хотите, чтобы она была около x.
Чтобы сделать это, у вас есть много способов.
Один из них заключается в том, чтобы сделать вращения прямо во-первых,Например, если с вашего устройства вы получаете, что вращение должно быть вокруг z, но в вашей программе вы хотите отобразить его на x, ну вместо того, чтобы вращать вокруг z, вращайте его вокруг x !!Что-то вроде
glRotatef(rot_z, 1, 0, 0);
Так что, если данные, которые вы получаете, будут такими:
data[] = {data_about_x, data_about_y, data_about_z}
, у вас будет такая карта:
data_map[] = {2, 0, 1}
При вращениинапишите:
glRotatef(data[data_map[0]], 1, 0, 0)
В качестве альтернативы вы можете использовать карту наоборот, что может иметь для вас больший смысл:
axis_map[][3] = {{0, 1, 0}, {0, 0, 1}, {1, 0, 0}}
Затем напишите:
glRotatef(data[2], axis_map[2][0], axis_map[2][1], axis_map[2][2]);