Pergunta

Eu só não parece ser capaz de descobrir isso na minha cabeça. Eu estou tentando mover um objeto no espaço 3D.

Se eu tiver um ponto em 5,15,5 e usar funções OpenGL para mudar a vista do modelo ....

glTranslatef( 10.0f, 4.0f, 4.0f );
glRotatef( 33.0f, 1.0f, 0.0f, 0.0f );
glTranslatef( 10.0f, 4.0f, 4.0f );

Existe uma maneira que eu possa descobrir onde esse ponto acaba (no mundo coordenadas / globais)? Posso fazer algum tipo de cálculos matriciais que vai me dar de volta 20,26,23 (ou o que todo o novo coordenar a posição é)?

Por favor, ajuda, eu estive preso sobre isso por tanto tempo!

Foi útil?

Solução

Tente o seguinte:

1) Empurrar a matriz de corrente na pilha; 2) identidade de carga e aplicar suas transformações; 3) Obter a matriz de transformação que resulta em alguma variável Temp. glGet ou algo parecido vai ajudar; 4) Pop a matriz a partir da pilha;

Agora você tem sua matriz de transformação. Multiplique o seu ponto por esta matriz para prever as coordenadas do ponto após a transformação.

Outras dicas

Definitivamente: confira http: //research.cs.queensu .pt / ~ jstewart / 454 / notas / gasoduto /

Em suma, todas estas chamadas reduzir a uma única matriz, que é multiplicado para o ponto.

O método de SadSido vai ficar definitivamente você a matriz resultante, mas não pode ferir para realmente entender o que está acontecendo nos bastidores. Os cálculos acima vai resultar em uma equação de álgebra linear do seguinte:

Pout = [mTranslate] * [mRotate] * [mTranslate] * PIN

= onde mTranslate as chamadas de tradução (tradução) para matriz, e chamada mRotate = rotação (matriz para rotação em torno de um eixo arbitrário). Calculam que, e você está pronto para ir!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top