Eu, há um tempinho atrás, quando estava aprendendo OpenGL, fiquei em dúvida quanto a matrizes. Qual era a sua utilidade no mundo 3D. Então achei este tutorial no site do NeHe e resolvi traduzir, pro pessoal que tem as mesmas dúvidas! Ele é um tutorial bem simples, porém útil.
Tutorial por Paul Frazee (The Rainmaker);
Matrizes
A Matriz Identidade
As Matrizes são o que fazem o mundo 3D funcionar. Sem elas, rotação e translação seria impossível. Teríamos que definir cada vértice na mão! Essa é uma péssima idéia para qualquer programador com experiência 3D. Uma matriz padrão num mundo 3D tem 4×4 elementos.
[1, 0, 0, 0]
[0, 1, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]
Se você multiplicar qualquer ponto pela matriz acima, seria equivalente a multiplicar por 1 (um), nenhuma mudança ocorreria, por isso é chamada de Matriz Identidade. Naturalmente, queremos um pouco mais que isso, então temos também a…
A Matriz de Translação
tx, ty e tz representam os nossos valores de translação:
[ 1, 0, 0, 0]
[ 0, 1, 0, 0]
[ 0, 0, 1, 0]
[tx, ty, tz, 1]
A Matriz de Rotação
Rotação no Eixo X
[ 1, 0, 0, 0]
[ 0, cos(xrot), -sen(xrot), 0]
[ 0, sen(xrot), cos(xrot), 0]
[ 0, 0, 0, 1]
Rotação no Eixo Y
[ cos(yrot), 0, sen(yrot), 0]
[ 0, 1, 0, 0]
[-sen(yrot), 0, cos(yrot), 0]
[ 0, 0, 0, 1]
Rotação no Eixo Z
[ cos(zrot), -sin(zrot), 0, 0]
[ sin(zrot), cos(zrot), 0, 0]
[ 0, 0, 1, 0]
[ 0, 0, 0, 1]
A Matriz de Escala
sx, sy e sz representam nossos valores de escala (redimensionamento)
[ sx, 0, 0, 0]
[ 0, sy, 0, 0]
[ 0, 0, sz, 0]
[ 0, 0, 0, 1]
Você pode combinar as matrizes multiplicando elas juntas. Transformando um ponto a partir de qualquer uma dessas matrizes, terá o resultado desejado. Repare que a translação muda o eixo para qualquer outra operação. Se você transladar -5, rodando no eixo Y, o eixo central será (0,0,-5).
– // –
Como eu disse, tutorial curto, porém bem útil!
Eu sei que este tutorial é antigo, e que já existem traduções, mas acho que não custa nada mostrar aqui né…
Valeu!