Pergunta

Eu estou trabalhando com algum código que gera uma matriz de rotação 3x3 e um vetor de translação representando uma orientação câmeras e localização.

No entanto, os estados de documentação que para obter a localização do uma câmera deve multiplicar o transposto e invertido matriz de rotação do vetor de translação. Isso significa que o vector original não é a localização da câmera? Se não, o que é que vector originais representam?

Foi útil?

Solução

Eu estou assumindo que a R (matriz de rotação) e t (o vetor de translação) obteve foram wrt um sistema de coordenadas com (0,0,0) como a origem.

Com R e t agora você pode mover um ponto do mundo sistema de coordenadas ( WC ) para a câmera sistema de coordenadas ( CC ), ou seja, X c = RX + t onde X é um ponto de 3D em CA e X c X em CC (isto é, visto do ponto de vista da câmara). Isto é aplicável assumindo que estamos lidando com corpos rígidos para que basta girar o ponto e, em seguida, traduzi-lo.

Agora, você precisa encontrar as coordenadas do centro da câmara, que é a origem do CC , ou quando X c = 0 :

0 = RC + t onde C é o 3D coordenadas do centro da câmara em WC . Resolvendo para C nós temos,

C = -R -1 t

E, a propósito,

A correção na documentação

Transpondo e multiplicação da matriz de rotação não altera a matriz de rotação --- uma rotação matriz é ortogonal que meios fortes <> a sua transposta é igual ao seu inverso e, por conseguinte, < em> (R T ) -1 = R .

Outras dicas

O vector original neste caso é provavelmente o vetor de translação nas coordenadas após a tradução. Ou talvez antes -. Tudo depende do seu ponto de vista pessoal

A coisa é, você tem dois sistemas de coordenadas, e cada vetor pode ser representado em cada um dos sistemas de coordenadas. A matriz de rotação permite transformar as coisas de um sistema para o outro. O "multiplicar a matriz de rotação transposta e invertida por" uma coisa é a transformação para trás.

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