Matrizes

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!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: