SLIDE 14 -A Transformação de Perspectiva Figura 5 - O plano mostrando detalhes da projeção em perspectiva. Uma visão em perspectiva pode ser gerada simplesmente pela projeção de cada ponto de um objeto no plano da tela, como na figura 4. As coordenadas da imagem projetada do ponto P medido nas coordenadas do observador são facilmente calculadas. Dxe xs Sze Dye ys Sze (13) SLIDE 15 -A Transformação de Perspectiva Alternativamente, podemos converter para coordenadas de tela, incluindo uma especificação da localização da janela pela qual a imagem é mostrada Dxe Vsx Vcx xs Sze Dye Vsy Vcy ys Sze (14) Os quatro parâmetros são dados em notação “center-size”: a janela está centrada em , tem unidades de altura e unidades de largura. Estes quatro parâmetros podem ser determinados a partir dos parâmetros da janela de visualização. Por exemplo, e . A transformação de perspectiva é fundamentalmente diferente daquela para rotação, translação e mudança de escala: ela envolve divisão pelo valor da coordenada , enquanto as outras envolvem apenas multiplicações e adições. Gerar uma imagem em perspectiva verdadeira, requer divisão pela profundidade de cada ponto. SLIDE 16 - Visão em perspectiva de um cubo Considere um cubo centrado na origem do sistema de coordenadas do “mundo”, definido pelos seguintes pontos e linhas Linhas Pontos x y z AB, BC, A -1 1 -1 CD, DA, B 1 1 -1 EF, FG, C 1 -1 -1 GH, HE D -1 -1 -1 AE, BF, E -1 1 1 CG, DH F 1 1 1 G 1 -1 1 H -1 -1 1 Vamos observar este cubo a partir do ponto (6,8,7.5), com o eixo de visualização apontando diretamente para a origem do sistema de coordenadas do “mundo”. Existe ainda um grau de liberdade sobrando, que é uma rotação arbitrária em torno do eixo : vamos assumir que o eixo está no plano z = 7.5. SLIDE 17 - Visão em perspectiva de um cubo 1) O sistema de coordenadas é transladado para (6,8,7.5), como mostrado na figura 10a. O ponto (6,8,7.5) no sistema de coordenadas original passa a ser a origem: 0 0 1 0 1 0 T1 0 0 1 6 8 7.5 0 0 0 1 2) Rotação do sistema de coordenadas em torno do eixo de -90, como mostrada na figura 10b. Observe que, devido à utilização da transformação inversa, substituímos = 90 na equação 4: 1 0 T2 0 0 0 0 0 1 1 0 0 0 0 0 0 1 SLIDE 18 - Visão em perspectiva de um cubo Figura 10 - Cinco passos para realizar a transformação de visualização: (a) Translação; (b) Rotação em torno do eixo x; (c) Rotação em torno do eixo y; (d) Rotação em torno do eixo x; (e) Invertendo o eixo z. SLIDE 19 - Visão em perspectiva de um cubo 3) Rotação em torno do eixo , de um ângulo , tal que o ponto (0,0,7.5) ficará localizado no eixo , como mostrado na figura 10c. Temos que e : 0.8 0 T3 0.6 0 0 0.6 1 0 0 0.8 0 0 0 0 0 1 4) Rotação em torno do eixo , de um ângulo , tal que a origem do sistema de coordenadas original fique sobre o eixo , como mostrado na figura 10d. Temos que e : 0 0 0 1 0 0.8 0.6 0 T4 0 0.6 0.8 0 0 0 0 1 SLIDE 20 - Visão em perspectiva de um cubo 5) Finalmente, revertendo o sentido do eixo , de modo a criar um sistema de coordenadas de “mão-esquerda”, de acordo com as convenções do sistema de coordenadas do observador, como mostrado na figura 10e. Uma matriz de mudança de escala é utilizada 1 0 T5 0 0 0 0 1 0 0 1 0 0 0 0 0 1 Isto completa as cinco transformações primitivas necessárias para estabelecer a transformação de visualização . Suponha que desejamos preencher uma tela de 30 x 30 cm, desenhada para ser vista de uma distância de 60 cm, e cujo o sistema de coordenadas da tela vai de 0 a 1023. Assim, D = 60, S = 15, e . A transformação 16 é, portanto SLIDE 21 - Visão em perspectiva de um cubo 4 0 N 0 0 0 4 0 0 0 0 1 0 0 0 0 1 e a equação 18 passa a ser x xs 5115 . c z 5115 . c y ys 5115 . c z 5115 . c (23) Todos os detalhes das transformações já foram especificados. Cada vértice do cubo é transformado pela matriz VN, sofre um processo de “clipping”, e convertido para coordenadas de tela usando-se a equação 23. 3.2 1.44 0.48 2.4 1.92 0.64 V T1T2 T3T4 T5 N 0 3.2 0.6 0 12.5 0 0 0 0 1 SLIDE 22 - Visão em perspectiva de um cubo Podemos agora aplicar esta transformação aos oito vértices do cubo: xc yc zc A 5.6 -3.68 12.94 B -0.8 -6.56 11.98 C -5.6 -2.72 13.26 D 0.8 0.16 14.22 E 5.6 2.72 11.74 F -0.8 -0.16 10.78 G -5.6 3.68 12.06 H 0.8 6.56 13.02 SLIDE 23 - Visão em perspectiva de um cubo Apesar da necessidade da rotina de “clipping” ser aplicada a cada linha no cubo, está aparente na tabela que todos os vértices estão dentro da pirâmide de visualização, e o algoritmo de “clipping” irá aceitar trivialmente todas as linhas. As coordenadas de tela das extremidades das linhas são calculadas com a equação 23, e as linhas são desenhadas como mostrado na figura 11. Figura 11 - A visão em perspectiva do cubo, gerada pelos cálculos do exemplo do texto.