Существуют тысячи свободных матриц класса . Поищите в Google, и тогда вы сможете настроить перевод и ротацию без использования функций gl * ...
edit: Если вы действительно хотите создать матрицу без использования более чем удобного класса матрицы, тогда вы можете определить glRotatef (angle, x, y, z) следующим образом:
const float cosA = cosf( angle );
const float sinA = sinf( angle );
float m[16] = { cosA + ((x * x) * (1 - cosA)), ((x * y) * (1 - cosA)) - (z * sinA), ((x * z) * (1 - cosA)) + (y * sinA), 0.0f,
((y * x) * (1 - cosA)) + (z * sinA), cosA + ((y * y) * (1 - cosA)), ((y * z) * (1 - cosA)) - (x * sinA), 0.0f,
((z * x) * (1 - cosA)) - (y * sinA), ((z * y) * (1 - cosA)) + (x * sinA), cosA + ((z * z) * (1 - cosA)), 0.0f,
0.0f, 0.0f, 0.0f, 1.0f
};
Взято из Википедии .
Матрицу перевода действительно легко создать: glTranslatef (x, y, z) определяется следующим образом:
float m[16] = { 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
x, y, z, 1.0f
};
Вы можете довольно легко найти матричное умножение и матрично-векторное умножение.
Чтобы сделать вашу жизнь проще, вы можете просто скачать класс матрицы, который сделает все это за вас ...