Computação Gráfica Conteúdo Objetivo do Curso • Proporcionar o aprendizado de técnicas e conceitos básicos de computação gráfica 2D e 3D, para o desenvolvimento, avaliação ou uso de aplicativos gráficos. Ementa • • • • • • • Introdução à computação grafica Hardware: arquiteturas de terminais gráficos Projetos de pacotes gráficos Padrões Interface Humano/Computador Aspectos Geométricos: gráficos 2D e 3D Aspectos Humanos: . realismo na apresentação . Intensidade e coloração • Modelos e hierarquia de objetos • Representação de superfícies 3D e de sólidos • Uso de computador para projetos e ensaios de pacotes Tópicos • Conceituação de computação gráfica e áreas de aplicação • Dispositivos gráficos e arquiteturas de terminais gráficos • Conceituação de aplicativos gráficos • Portabilidade e evolução de bibliotecas gráficas • Algoritmos de transformação de primitivas gráficas 2D e 3D (coordenadas homogêneas, rotação, translação, escalamento, e projeções) • Curvas Bezier e Spline • Biblioteca OpenGL para o desenvolvimento de gráficos Bibliografia • Foley,J.D.; van Dam,A.; Feiner,S.K.; Hughes,J.F.- Computer Graphics – Principles and Practice, 2.ed. Addison Wesley Pub.Co.,USA, 1992 • Hearn,D. & Baker, M.P. – Computer Graphics, 2.ed. Prentice Hall, NJ,1997 • Gomes,J.& Velho, L. – Computação Gráfica – Volume 1.IMPA, RJ, 1998 • Jacobs, J.Q. – Delphi Developer’s Guide to OpenGL. Wordware Pub., Texas, 1999 • Tori,R.; Arakaki,R.; Massola,A.M.A.; Filgueiras,L.V.L. – Fundamentos de Computação Gráfica. LTC, RJ, 1987 • Mason Woo, Jackie Neider, Tom Davis & Dave Shreiner – OpenGL Programming Guide, 3rd. Ed. Addison-Wesley, 1999. Avaliação • Nota final = 0.5 x Prova + 0.5 x Trabalho Prova: escrita, sobre a parte teórica Trabalho: criação, implementação e visualização de um gráfico 3D com animação - em grupo de no máximo 4 alunos - apresentação do trabalho em sala de aula Introdução • Computação gráfica – conjunto de algoritmos, técnicas e metodologias para o tratamento e a representação gráfica de informações através da criação, armazenamento e manipulação de desenhos, utilizando computadores e periféricos gráficos. • Em termos de aplicação, ela pode ser dividida nas seguintes áreas: – – – – – – CAD (Computer Aided Design) Gráficos Ilustrativos Arte por Computador Entretenimento Educação e Treinamento Visualização Científica Interação com outras áreas Física Outras ... Matemática Computação Gráfica Medicina Psicologia Eng. Eletrônica Artes Conceito de Aplicativo Gráfico Aplicativo Gráfico: um sistema composto de um ou mais programas, para a geração de uma determinada apresentação gráfica que pode ser composta de recursos 2D e/ou 3D e/ou imagem. Data Base Application Program Metafile Device - Independent Graphics Package Device Driver Device Driver Metafile Reader Virtual Device Interface Metafile Writer Virtual Device Metafile Current Terminal Future “VDI” Terminal Current Plotter Biblioteca Gráfica A biblioteca gráfica contem as funções que o aplicativo aciona para a geração de primitivas gráficas. Portabilidade – independência em relação aos dispositivos gráficos Device Drivers – comunicação da biblioteca gráfica com os dispositivos Exemplos de bibliotecas gráficas: Core, Dore, XFDI, Starbase, GKS, PHIGS, GL, OpenGL e DirectX OpenGL – evolução do GL (Silicon Graphics) - grandes produtores de software e hardware tem priorizado o seu uso DirectX – suportada pela Microsoft Conceitos de CAD CAD (Computer Aided Design) - utilizar o computador para auxiliar nos projetos tais como: edifício, automóvel, navio, espaçonave, eletrodoméstico, tapete, roupa, etc. São envolvidos conceitos de computação gráfica, com recursos de interação, técnicas de gráficos 2D ou 3D, rendering, animação, etc. Os sistemas CAD podem funcionar de forma integrada aos sistemas CAM (Computer Aided Manufacturing), quando os dados do projeto resultantes do CAD podem ser incorporados no controle da fabricação do produto com o auxílio do computador. Atualmente os sistemas CAD/CAM sofisticados fazem parte de um conjunto maior de programas denominado de sistema de Informação gerencial MIS (Management Information System), cuja função é gerenciar todas as etapas de produção, o que envolve controle de estoque, controle de máquinas de montagem, controle de inspeção de qualidade, etc. Dispositivos de Visualização Gráfica com o uso de CRTs (Cathode Ray Tubes) Antigamente, o modo de operação destes dispositivos era semelhante a um osciloscópio. A exibição no CRT era feita na sequência e posição dos pontos correspondentes às primitivas gráficas a serem exibidas. Essas primitivas eram contidas numa memória denominada de Refresh Buffer . CPU . . . MOVE 10 15 LINE 400 300 . . . Controlador de Exibição Refresh Buffer Teclado Mouse Terminal de Vídeo Terminais de Vídeo Vetoriais Devido a sequência de traçado de primitivas gráficas ( na maioria - linhas) , os primeiros terminais de vídeo foram chamados de terminais vetoriais. Devido a persistência luminosa do material que reveste a tela do tubo de raios catódicos – CRTs, a imagem se mantinha até o próximo ciclo de redesenho. Os refresh buffer continha os comandos de primitivas que indicavam ao controlador de exibição onde traçar as linhas. Problemas: - o tempo de geração de uma imagem completa é proporcional ao número de primitivas. Isso faz com que uma imagem complexa leva um tempo excessivo para o próximo ciclo do redesenho, e a imagem começa a piscar (flicker). Fisiologia É necessária uma frequência maior que 16 Hz para que o redesenho possibilite sensação de continuidade de movimento, em animação. Porém, para evitar a sensação tremeluzente (flicker) é necessária uma frequência bem maior. Nos filmes: a frequência de quadros é de 24 Hz, porém, cada quadro é iluminada duas vezes, dando uma sensação de 48 Hz para a exibição. Na televisão (brasileira/americana ): A frequência de quadros completos é de 30 Hz, porém, cada quadro completo é composto de campo de linhas impares e de linhas pares, que são entrelaçados, dando uma sensação de 60 Hz para exibição. Televisão européida: 25 Hz para quadro completo, 50 Hz para campos. Terminais de Vídeo por Varredura (Raster) Frame Buffer 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 CPU Controlador de Exibição Teclado Mouse 1 1 0 1 0 Controlador de Vídeo Terminal Arquitetura Simples Dispositivos Periféricos CPU BUS Memória do Sistema Frame Buffer na Memória do Sistema Controlador de Vídeo Monitor Arquitetura Comumente Usada Dispositivos Periféricos CPU BUS Memória do Sistema Frame Buffer Controlador de Vídeo Monitor - Para animação é importante a existência de mais um frame buffer (double buffer). - Enquanto o controlador exibe o conteúdo de um frame buffer, o conteúdo do outro é atualizado pela CPU Arquitetura com uso do Processador Gráfico Dispositivos Periféricos CPU Arquitetura com Proces. Gráfico BUS Processador Gráfico Memória do Processador Gráfico Memória do Sistema Frame Buffer Controlador de Vídeo Monitor Processador Gráfico: - scan conversion – determinação de endereço de memória de um pixel - traçado de primitivas gráficas – linhas, arcos, linhas com anti-aliasing, rendering, etc. Operação com tabela de cores (LUT - Look Up Table) Organização da Look-Up Table de um Terminal Ymax Frame Buffer Monitor Pixel -> 67 (x’,y’) 0 Xmax 0 Pixel exibido em (x’,y’) 01000011 Red 255 67 0 Green Blue 1001 1010 0001 100110100001 Look-up Table Olho Humano Retina: - 6 a 7 milhões de cones – sensíveis a níveis altos de luminosidade e cores - 75 a 150 milhões de bastonetes – sensíveis a níveis baixos de luminosidade Percepção do olho humano: - Terminais gráficos de 1280 x 1024 pixels - Para a transição suave de tons num dégradé, sem distinção das linhas da mudaça de tons é necessário no mínimo 100 tons. - Para satisfazer essa exigência, os terminais modernos permitem a exibição simultânea de 128 ou 256 cores Transformações Afins • Uma transformação de coordenadas é denominada uma transformação afim, se em: v A v b as coordenadas (x’,y’,z’) do vetor v’, que definem um ponto no espaço, são uma função linear de (x,y,z) do vetor v, e aij e bi são constantes que determinam a transformação x / a11 / a y 21 z/ a 31 a12 a 22 a 32 a13 a 23 a 33 x b1 y b 2 z b3 Transformações afins • Transformações afins tem a função de modificar a posição dos pontos no espaço, ou de objetos contidos no espaço. • Tem a característica de transformar linhas paralelas em linhas paralelas e mapear pontos finitos em pontos finitos. • O grupo de transformações afins do espaço define a geometria afim, que estuda as razões e proporções entre objetos geométricos. • Note-se que em geometria afim, paralelismo é um conceito importante, sendo relações entre linhas paralelas uma parte substancial da geometria e os teoremas da geometria afim são idênticos aos da geometria euclidiana. • Rotação, translação, escalamento, espelhamento e cisalhamento são exemplos de transformações afins detalhados a seguir. Translação de um ponto z . (x,y,z) b v . (x',y',z') v' y x' x y' z' = 1 0 0 x 0 1 0 y 0 0 1 z b1 + b2 b3 Translação • A translação – alteração da posição dos pontos através da soma do vetor de deslocamento às suas coordenadas. É aplicada sobre todos os pontos da figura para a sua translação no espaço. O exemplo clássico em computação gráfica de aplicação desta transformação é a função pan, disponível em vários sistemas gráficos. • Em termos de transformação afim, a translação corresponde à soma de um vetor de deslocamento b ao vetor que define o ponto que se deseja deslocar. Mudança de Escala (Scaling) A Mudança de Escala corresponde à multiplicação das coordenadas de um ponto por valores iguais ou distintos. É normalmente aplicada sobre todos os pontos de uma figura com o objetivo de ampliar ou reduzir a sua dimensão ou então distorcer a sua forma geométrica. O uso clássico desta operação em computação gráfica é a função zoom in (ampliação) ou zoom out (redução). x' y' z' = ex 0 0 x 0 ey 0 y 0 0 ez z Rotação • A rotação é o giro de um determinado ângulo de um ponto em torno de um ponto de referência, sem alteração da distância entre eles. • Esta operação é aplicada normalmente sobre todos os pontos de uma figura, o que possibilita que ela seja rotacionada sem sofrer deformação. Rotação em torno do eixo z z y . P' = (x',y',z') y D x . . P = (x,y,z) . P' = (x',y',z') z . P = (x,y,z) x D cos( ) y D sen( ) x / D cos( ) y D sen( ) / x cos(a b) cos(b) cos(a) sen(b) sen(a) sin(a b) cos(b) sen(a) sen(b) cos(a) x / D cos( ) y / D sen( ) x / x cos( ) y sen( ) y / x sen( ) y cos( ) cos ( ) - sen ( ) x' y' z' = sen () 0 cos ( ) 0 1 0 x 0 y z Rotação em torno do eixo x z . P' = (x',y',z') D . z P = (x,y,z) . P' = (x',y',z') y . P = (x,y,z) x . y x y D cos( ) y / z Dsen( ) D cos( ) z / Dsen( ) y/ D cos( ) z / Dsen( ) y/ y cos( ) zsen( ) z/ ysen( ) z cos( ) x' y' z' 1 = 0 0 0 cos ( ) -sen ( ) 0 sen ( ) cos( ) x y z Rotação em torno do eixo y z . P = (x,y,z) x . P' = (x',y',z') y . D . P = (x,y,z) P' = (x',y',z') y . z x x Dsen( ) x/ Dsen( ) z D cos( ) z / D cos( ) x/ Dsen( ) z / D cos( ) x/ x cos( ) zsen( ) z/ xsen( ) z cos( ) x' y' z' = cos () 0 0 1 -sen ( ) 0 sen ( ) 0 cos( ) x y z Rotação em torno de um eixo genérico • A matriz de rotação em torno de um eixo genérico não é complexa, porém trabalhosa em termos de dedução, assim, será apresentado apenas a matriz MGR que permite esta operação. • Sendo N um vetor unitário de coordenadas (x,y,z) e o ângulo de rotação, tem-se: tx 2 c txy sz txz sy 2 MGR txy sz ty c tyz sx txz sy tyz sx tz 2 c Onde: x,y,z = coordenadas de N t = 1 - cos() s = sin() c = cos() y, y* j n N Q i S O z, z* k P P* x, x* Espelhamento • Uma operação bastante conhecida em computação gráfica é o espelhamento, a qual consiste em rotacionar um objeto em torno de um eixo de tal maneira que os pontos do objeto na posição original e na rotacionada mantenham a mesma distância em relação a um linha de referência, caso bidimensional, ou a um plano de referência, caso tridimensional. • As figuras mostram o espelhamento de um objeto: a) em torno do eixo y em relação ao plano xy e b) em torno do eixo z em relação ao plano xz. z y x z y x Cisalhamento (shear) • • • • Outra transformação afim importante de ser estudada é o cisalhamento (shear), cujo exemplo clássico para o sistema de coordenadas bidimensional que explica a sua função é o da italização de um caracter. Neste caso, há uma variação no valor da coordenada x em função do valor da y, sendo MTS_1 a matriz de transformação correspondente. Pode-se associar uma outra transformação a de cisalhamento, como, por exemplo, o escalamento da coordenada y, conforme exemplificado em MTS_2. A matriz MTS_3 ilustra o uso desta transformação para o caso tridimensional. MTS_1 = MTS_2 = MTS_3 = i_1 i_2 i_3 1 sh x 0 1 1 sh x 0 e y 1 0 s x 0 1 s y 0 0 1 Exemplo de cisalhamento no caso 3D y y x x z z Composição das transformações • Uma importante questão que sempre deve ser considerada com relação as transformações afins se refere a sua composição. • Neste caso, a ordem em que elas são executadas pode alterar o resultado final esperado. • Considere-se então duas transformações afins, uma somente de rotação de 45 em torno do eixo z e outra somente de translação de valor x ao longo do eixo x. • A aplicação primeiro da rotação e depois da translação tem resultados distintos. y x z y y x x z z • Neste sentido, caso se deseje rotacionar um objeto no espaço em torno de um ponto interno a ele, deve se primeiramente deslocar o centro de rotação (origem dos eixos) para este ponto, proceder a rotação e posteriormente voltar o centro de rotação à sua posição inicial. • Note-se que isto equivale a deslocar o objeto para o centro de coordenadas. y y y y y x x z z z x x z z x Projeções Projeções Planares • Dado que a exibição de um objeto 3D em uma tela de computador ou em uma folha de papel exige o mapeamento de um sistema de coordenadas 3D em um 2D, operações de projeção são requeridas. Em geral, entende-se como projeção, o processo de mapear um sistema de coordenadas de dimensão “n” em um de dimensão menor ou igual a “n-1”. • O objetivo deste curso é conceituar projeções planares (para um plano, 2D), apresentando a sua classificação e formas algébricas de manipulá-las. Com base nestes conceitos, será ilustrado o funcionamento do esquema de transformações em bibliotecas e sistemas gráficos que manipulam primitivas tridimensionais. HISTÓRICO 2150 A.C. - desenho de planta de um prédio da cidade de Lagash na Mesopotâmia. 500 AC. - o pintor Agatharchus foi o primeiro a usar perspectivas em larga escala e escreveu um livro sobre “pintura de cenas”, o que inspirou os filósofos Anaxagoras e Demócrito a escrever sobre perspectiva. 14 AC - primeira evidência real do uso de desenhos para guiar edificações foi encontrado nos textos de Vitruvius, um arquiteto e engenheiro romano. 1300 - formalização destas técnicas surgiu na Renascença. Os pintores Duccio, de “A Última Ceia”, e Giotto empreenderam esforços no sentido de representar a terceira dimensão através da perspectiva. 1400 - Filippo Brunelleschi foi o primeiro artista a desenvolver um sistema matemático para a perspectiva. 1435 - publicação do primeiro tratado sobre perspectiva, Della Pittura, por Leone Battista Alberti. No mesmo período, a técnica da perspectiva continuou a ser aperfeiçoada por Piero della Francesca através do texto De Prospettiva Pingendi e por Leonardo da Vinci que pintou a sua versão de “A Última Ceia”. 1801 – publicação do livro Geometrie Descriptive, de Gasparad Monge, um desenhista de fortificações militares francesas. Foi o primeiro a descrever de forma organizada o uso de projeções em engenharia, o que lhe valeu o título de “pai da geometria descritiva”. As técnicas de projeções continuaram a ser estudadas e aperfeiçoadas e se popularizaram entre profissionais e estudantes de engenharia, artes e arquitetura. Com o surgimento da computação gráfica e com a popularização de sistemas e bibliotecas gráficas, o número de interessados nas técnicas de projeções se ampliou acentuadamente. Geralmente, os usuários de sistemas ou bibliotecas gráficas se deparam com operações relacionadas a posicionamento e especificação de câmeras, ou então, a ajuste de transformações que permitam o correto posicionamento de um objeto em uma cena. Outro problema nesta mesma linha é o transporte dos objetos criados em um determinado sistema gráfico para outro. Projeções em superfícies planares, cilíndricas e cônicas Proj. Planar Proj. Cilindrica Proj. Cônica Projeções em superfícies planares Proj. Planares Paralelas Ortográficas Planta Perspectivas Oblíquas Dois-Pontos Cabinet V. Frontal Cavalier V. Lateral Axonométricas Isométricas Dimétricas Trimétricas Um-Ponto Três-Pontos Projeções paralelas e perspectivas As projeções planares paralelas e perspectivas diferem com relação a distância do plano de projeção ao centro de projeção: - se a distância é finita, a projeção é perspectiva, e - se a distância é infinita, a projeção é paralela C. de Projeção no Infinito A A’ A B’ A’ B C. de Projeção no Finito Raios Projetores B’ B Projeções planares paralelas • Projeções planares paralelas são subclassificadas em ortográficas e oblíquas dependendo da relação entre a direção dos raios projetores e a normal ao plano de projeção. - projeções ortográficas, as direções são as mesmas (raios perpendiculares ao plano de projeção). - projeções oblíquas, são diferentes. (a) Ortográfica r N (b) oblíqua r N Projeções ortográficas: vistas lateral, frontal e planta • • • As projeções ortográficas vista lateral, vista frontal e planta constituem as projeções normalmente utilizadas em desenho técnico. Os vetores normais aos planos de projeção coincidem com a direção dos eixos cartesianos, e a direção dos raios de projeção. Elas oferecem uma visão parcial do objeto, no entanto, mantém sem alteração as relações de dimensões e ângulos do objeto projetado. Estas projeções são geralmente utilizadas em conjunto, contando também com uma projeção axonométrica ou perspectiva. Planta Vista Lateral Vista Frontal Projeções ortográficas axonométricas • As projeções paralelas ortográficas axonométricas tem a direção dos raios projetores e a normal ao plano de projeção coincidentes, porém distintas da direção dos eixos cartesianos. Permitem a visualização de várias faces paralelas aos planos cartesianos de uma única vez. Projeções ortográficas axonométricas: dimétricas, isométricas e trimétricas • Projeções axonométricas distorcem os objetos, alterando as relações de ângulos e dimensões de lados dos objetos, no entanto, mantém as relações de paralelismo entre eles. • A alteração da dimensão dos lados é relacionada com a alteração da dimensão dos versores (vetores unitários) em cada um dos eixos x, y e z, quando projetados no plano. • Assim, projeções axonométricas se subdividem em: dimétricas, quando dois versores variam a dimensão igualmente quando projetados no plano; isométricas, quando três versores variam na mesma proporção; e trimétricas, os três versores variam de forma diferenciada. Exemplos de projeções ortográficas axonométricas y Dimétrica Isométrica x y’ z x’ y’ x’ Projeções paralelas oblíquas • As projeções paralelas oblíquas tem a direção da normal ao plano de projeção distinta da direção dos raios projetores. Projeções paralelas oblíquas: cavalier e cabinet As projeções paralelas oblíquas se subdividem em cavalier e cabinet. Na cabinet há um encolhimento na dimensão do versor perpendicular ao plano de projeção para corrigir a ilusão de que o objeto exibido é maior na direção deste versor. Cavalier Cabinet Cavalier Cabinet Projeções planares perspectivas • O efeito visual de uma projeção perspectiva é bastante realista, pois as dimensões de um objeto projetado variam inversamente com relação ao centro de projeção, o que está de acordo com o modo de funcionamento do sistema visual humano. • Como as projeções axonométricas, elas permitem a visualização conjunta de várias faces normais aos eixos x, y, e z, de um objeto. • As projeções perspectivas não são úteis para documentar precisamente as formas de um objeto, dado que as dimensões e os ângulos dos seus lados podem sofrer alterações após a projeção. • Em especial, pode haver perda do paralelismo entre as linhas. Projeções perspectivas: ponto de fuga • Como a projeção perspectiva tem o centro de projeção localizado em um ponto finito, ocorre uma distorção no objeto projetado que faz com que qualquer conjunto de linhas que sejam paralelas ao plano de projeção convirjam para um mesmo ponto denominado ponto-de-fuga. O surgimento do ponto-de-fuga pode ser melhor compreendido observando-se as figuras. z B z l_A p A RP l_B pf l_B pXY RP1 RP2 l_A CP pXY pf CP • Na figura à esquerda, um raio projetor parte do centro de projeção e incide sobre um ponto p da linha l_A. Quando p tende ao infinito, o raio projetor vai encontrar este ponto no infinito, o que significa que a linha RP vai ficar paralela a linha l_A, cruzando, assim, o plano x sempre no mesmo ponto pf. Nota-se que um ponto sobre a linha l_B, paralela a linha l_A, vai ser alcançado no infinito de forma similar ao ponto sobre a linha l_A, ou seja, o raio projetor corta o eixo x no mesmo ponto pf. • Quando o raio projetor incide sobre uma linha paralela ao eixo de projeção, não tem ponto-de-fuga. A explicação para este caso é simples. Considere o ponto A da figura à direita que está sobre a linha l_A, paralela ao plano xy. Assim, quando A tender a infinito, o raio projetor RP1 vai encontrá-lo no infinito e, neste caso, estará paralelo ao plano xy, o que evita o surgimento do ponto-de-fuga. Ao contrário, o raio projetor RP2 que incide sobre o ponto B sobre a linha l_B, perpendicular ao plano xy, vai tender à origem quando B tender a infinito. Neste caso, a projeção perspectiva do retângulo vai apresentar apenas um ponto-defuga. • Para que a projeção deste retângulo apresente mais de um ponto-de-fuga basta rotacioná-lo, o que faz com que as suas linhas paralelas fiquem inclinadas em relação ao plano xy. z A B pf_2 pf_1 CP pXY • Para melhor se compreender a relação entre os pontos-de-fuga e o centro de projeção, a figura abaixo apresenta a forma de se obter a projeção perspectiva de um paralelepípedo com lados paralelos ao eixo x e centro de projeção sobre o eixo z. • O objeto é projetado do sistema de coordenadas 3D xyz no sistema de coordenadas 2D x’y’. • Dado que a dimensão dos lados AB, CD, EF e GH não são visíveis, a dimensão dos lados A’B’, C’D’, E’F’ e G’H’ foram definidas arbitrariamente. z C,D A,B E,F G,H PF_1 PF_2 y CP C’ A’ E’ G’ F’ B’ y’ H’ x’ Tipos de projeções perspectivas • Nota-se que cada conjunto de linhas paralelas no espaço pode ter associado um ponto-de-fuga. Assim, com o objetivo de definir um critério de classificação, somente as linhas paralelas aos eixos são consideradas. • Em função do número de pontos-de-fuga associados às linhas paralelas aos três eixos cartesianos, as projeções perspetivas se subdividem em projeções de um pontode-fuga, de dois pontos-de-fuga e de três pontos-defuga. • Projeções perspectivas de três pontos-de-fuga são usadas menos frequentemente, dado que elas acrescentam pouco realismo ao já alcançado pelas projeções de dois pontos-de-fuga. Projeção perspectiva com um ponto de fuga y y x z x Projeção perspectiva com dois pontos de fuga PF-1 PF-2 Projeção perspectiva com três pontos de fuga PF-1 PF-2 PF-3 Coordenadas Homogêneas Uma transformação afim segue a forma: v M v b (eq. 3.1) Esta formulação é, em termos de cálculo, bastante inconveniente para se determinar as coordenadas do vetor final, após uma série de transformações de um vetor inicial. A formulação da equação 3.4 é muito mais conveniente porque permite que o cálculo de múltiplas transformações seja realizado calculando-se a matriz de transformação resultante e aplicando-se esta matriz sobre o vetor (eq. 3.5). v1 M1 v v2 M2 v M v Mn b1 M1 v (eq. 3.2) M 2 b1 b 2 (eq. 3.3) (eq. 3.4) v M n1 ... M1 v (eq. 3.5) A solução usual para este problema é a alteração do espaço de coordenadas de dimensão 3 para 4, de forma controlada, de maneira que a dimensão da matriz M se altere de 3x3 para 3x4 e, assim, ela possa incorporar a transformação de translação (eq. 3.6). Como é inconveniente operar uma matriz não quadrada por não permitir, por exemplo, o cálculo da inversa, a matriz MT pode ser novamente modificada pela inserção de mais uma linha que não altere o resultado final (eq. 3.7). (eq. 3.6) x x xl 1 0 0 l y y m y 0 1 0 m z z zn 0 0 1 n 1 1 1 (eq. 3.7) MT = 1 0 0 0 0 1 0 0 0 0 1 0 l m n 1 Considerando-se uma matriz M genérica de dimensão 4x4, quando ela é aplicada sobre o vetor v , em coordenadas homogêneas, gera o vetor v * Para se calcular o vetor desejado, normaliza-se o vetor v * . Assim, supondo-se H 0 , tem-se v . x y v* M z 1 X Y Z H X / H Y / H v Z / H 1 Neste contexto, uma propriedade interessante e bastante útil das coordenadas homogêneas se refere a representação de um ponto no infinito. Considere o ponto sobre o eixo x indicado pelo vetor v * e A 0 v* 0 H quando H0 , A/ H v v : A / H 0 0 1 A aplicação de uma matriz de transformação em coordenadas homogêneas resulta em um ponto no infinito quando o seu vetor posicional for do tipo v * descrito a seguir. A B v* C 0 Os pontos no infinito dos eixos x,y e z, seriam representados respectivamente por: 0 1 0 0 0 1 z * y * x * 1 0 0 0 0 0 Estes vetores infinitos serão, em especial, usados na determinação de pontosde-fuga no caso de projeções planares perspectivas. A matriz de transformação M de dimensão 4x4, pode ser particionada em 4 quatro partes: 3x3 3x1 M 1 x 3 1 x 1 onde 1x3: produz projeção perspectiva 1x1: produz escalamento global 3x3: produz uma transformação afim do tipo rotação e mudança de escala 3x1: produz translação Álgebra das projeções planares paralelas Para que as projeções possam ser geradas em computador é necessário se definir matrizes de transformações que, aplicadas ao conjunto de pontos de um objeto tridimensional, permita a obtenção da figura projetada do objeto. Assim, a seguir, para cada tipo de projeção serão determinadas as matrizes de transformação. Este capítulo cobre a álgebra das projeções planares paralelas. Álgebra das Projeções Planares Paralelas Ortográficas Álgebra das Projeções Paralelas Ortográficas: vista lateral, frontal e planta As projeções planares ortográficas vista lateral, frontal e planta são obtidas através de transformações ortogonais, de acordo com as regras abaixo, e projeção no plano xy através de raios projetores perpendiculares a este plano. vista lateral- rotação de -90 no eixo x, eliminação da coordenada z vista frontal- rotação de -90 no eixo z, rotação de –90 no eixo x, e eliminação da coordenada z vista superior (planta)- rotação de -90 no eixo z, translação no eixo y no maior valor na coordenada x, e eliminação da coordenada z . A seguir é detalhada a geração da vista lateral. Assim, partindo-se da equação de rotação em torno do eixo x, RX 0 0 1 0 cos( ) sen( ) 0 sen( ) cos( ) 0 0 0 0 0 0 1 determina-se a matriz de projeção da vista lateral Mpvl MP VL 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 sendo = -90 e considerando-se a projeção no plano x’y’, coincidente com o plano xy. Álgebra das projeções planares paralelas ortográficas axonométricas As projeções vista lateral, frontal e planta permitem uma observação parcial do objeto projetado, em especial, caso se observe apenas uma delas, não é possível se conceber corretamente a forma do objeto. Isso acontece principalmente quando as faces do objeto posicionadas paralelamente aos planos cartesianos xy, yz e xz. são De forma a solucionar este problema, é usual a folha de projeto de um objeto conter as projeções vista lateral, frontal e planta, mais uma projeção axonométrica, a qual permite que se tenha uma visão mais integrada do objeto. As projeções paralelas ortográficas axonométricas tem a direção de projeção e a normal ao plano de projeção não coincidentes com a direção de um dos eixos principais. Isto é equivalente a se rotacionar adequadamente o objeto e considerar a direção de projeção e a normal ao plano de projeção coincidentes com a direção de um dos eixos principais. Nas projeções axonométricas há uma alteração da dimensão das faces do objeto quando projetadas sobre o plano. O tipo de rotação do objeto e as considerações sobre a alteração das dimensões permitem que se determine as matrizes de projeção. Neste sentido, o cálculo destas matrizes vai partir de uma rotação do objeto em torno do eixo y e posteriormente do eixo x. RX 0 0 1 0 cos( ) sen( ) RY 0 sen( ) cos( ) 0 0 0 0 0 0 1 cos( ) 0 sen( ) 0 0 sen( ) 0 1 0 0 0 cos( ) 0 0 0 1 RX cos( ) 0 sen( ) sen( ) sen( ) cos( ) cos( ) sen( ) RY sen( ) cos( ) sen( ) cos( ) cos( ) 0 0 0 0 0 0 1 Aplicando-se esta matriz sobre os vetores unitários (1,0,0), (0,1,0) e (0,0,1), versores nos eixos x, y, e z respectivamente, tem-se: xX y X R X RY z X 1 cos( ) 1 0 sen( ) sen( ) 0 sen( ) cos( ) 1 1 u Y x Y y Y R X RY z Y 1 0 0 1 cos( ) 0 sen( ) 1 1 uZ xZ y Z R X RY zZ 1 sen( ) 0 0 cos( ) sen( ) 1 cos( ) cos( ) 1 1 uX Considerando-se apenas as componentes x e y dos versores rotacionados, tem-se as projeções destes vetores sobre os plano xy. De forma a se estipular condições para o encolhimento da dimensão destes vetores, são calculados os seus módulos, como ilustrado a seguir. Assim, para o caso da projeção do versor sobre o eixo x tem-se: u x XY x x u x XY cos2 ( ) (sen 2 ( ) sen 2 ( )) 2 y x 2 Similarmente, para os versores sobre os eixos y e z tem-se: u y XY cos( ) u z XY (sen 2 ( ) cos2 ( ) sen 2 ( ) Considerando-se que no momento da projeção de um objeto 3D sobre o plano xy, ocorra um encolhimento por igual das coordenadas x e y dos pontos deste objetos, tem-se: u x XY u y XY cos2 () sen2 ()sen2 ( ) cos2 ( ) Como da trigonometria tem-se a equação: cos2 ( ) sen2 ( ) 1 aplicando-se esta relação, tem-se: sen2 ()sen2 ( ) sen2 () sen2 ( ) e finalmente, sen2 () sen2 ( ) / (1 sen2 ( )) Uma maneira simples de se calcular os ângulos e é considerar um valor fixo para o encolhimento no eixo z. Assim, inicialmente será suposto que a dimensão do versor projetado será 1/2, ou seja, encolherá pela metade. Logo, da equação u z XY (sen 2 ( ) cos2 ( ) sen 2 ( ) tem-se que sen2 () cos2 ()sen2 ( ) 1 / 2 2 Aplicando-se a equação anteriormente obtida sen2 () sen2 ( ) / (1 sen2 ( )) e rearranjando, tem-se: 8 sen4 ( ) 9 sen2 ( ) 1 0 2 Fazendo-se sen ( ) x , tem-se: 8x 2 9 x 1 0 Resolvendo-se essa equação, tem-se x=1/8 e x=1. A segunda raiz é inválida porque origina valor zero no denominador da equação anteriormente obtida sen2 () sen2 ( ) / (1 sen2 ( )) Usando-se a primeira raiz tem-se: sen2 ( ) 1 / 8 sen2 ( ) 1 / 7 20.705 22.208 e Desta maneira aplicando-se os valores obtidos, tem-se a seguinte matriz: R X RY 0. 0.377964 0.925820 0133631 . 0.935414 0.327321 0.353553 0.353553 0.866025 0. 0. 0. 0 0 0 1 que zerando os valores da coordenada z, tem-se a matriz de projeção axonométrica dimétrica: MP D 0. 0.377964 0.925820 0133631 . 0.935414 0.327321 0. 0. 0. 0. 0. 0. 0 0 0 1 Projeção axonométrica isométrica A projeção isométrica permite o encolhimento por igual de todas as coordenadas. Logo: u x XY u y XY u z XY Isso significa que , além da equação resultante de sen2 () sen2 ( ) / (1 sen2 ( )) ux uy XY XY tem-se a seguinte equação: sen2 () cos2 ()sen2 ( ) cos2 ( ) resultante de o que resulta em: uz XY uy XY sen2 ( ) (1 2 sen2 ( )) / (1 sen2 ( )) sen2 ( ) 1 2 sen2 ( ) e sen2 ( ) 1 / 3 Portanto sen( ) 1 / 3 sen( ) 1 / 2 e 35.26429 45.0 , Substituindo os valores, tem-se a matriz R X RY 0. 0.707107 0.707107 0.408248 0.816597 0.408248 0.577353 0.577345 0.577353 0. 0. 0. 0 0 0 1 que permite a projeção isométrica, após se zerar a coordenada “z”: 0. 0.707107 0.707107 0.408248 0.816597 0.408248 MP I 0. 0. 0. 0. 0. 0. 0 0 0 1 Um fato interessante advém da análise do ângulo que o versor no eixo x faz com o eixo x’, quando projetado no plano x’y’ . Tem-se: cos( ) uX sen( )sen( ) tan( ) (sen( )sen( )) / cos( ) tan( ) ( 1 / 2 1 / 3) / 1 / 2 3 / 3 Este resultado é bem conhecido de desenhistas, pois é com um esquadro de 30 e 60 que eles desenham a projeção de um objeto em uma folha de projeto. Uma outra consideração importante sobre projeções isométricas se refere ao fato que: sen ( ) 1 / 3 35.26 ou 144.74 sen ( ) 1 / 2 2 2 . 45.00 ou 13500 Logo, a projeção isométrica pode ser estruturada de outras formas. Exemplo A seguir é esboçado um exemplo de obtenção de uma projeção Axonométrica de um objeto, cujos vértices estão explicitados através da matriz PI PI M I 1 0 0 1 A 1 1 1 0 0 0 0 1 1/ 2 0 0 1 1/ 2 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 B C D E F G H Álgebra das Projeções Planares Paralelas Oblíquas • As projeções paralelas oblíquas tem a direção do plano de projeção distinta da direção dos raios projetores. • As projeções paralelas obliquas se subdividem em cavalier e cabinet, sendo que na projeção cabinet há uma distorção na dimensão do versor perpendicular ao plano de projeção, em geral, um encurtamento de 1/3 ou de 1/2. • Além disto, em ambos os casos, o ângulo () que este versor forma com o eixo x pode ser de 30 ou 45. Ângulo formado pela linha P1-P1’ com o plano xy - determina o grau de encurtamento ou de dilatação da dimensão do versor ( =45.0 não há alteração de dimensão e se =60 há um encurtamento pela metade ). Ângulo formado pela projeção da linha P1-P1’ com o eixo x - não tem influência sobre o tamanho do versor e o seu valor é arbitrário. P1 (0,0, z1 ) P1 (d cos( ), d sen( )) P2 (0,0, z2 ) P2 (( z2 / z1 ) * d )cos( ),(( z2 / z1 ) * d )sen( )) A generalização da formulação para qualquer ponto pode também ser feita facilmente. Assim, supondo-se z1 igual a 1 e z2 igual a z, tem-se: P2 (0,b, z) P2 ( z * d cos( ),b ( z * d )sen( )) P3 (a,0, z) P3 (a ( z * d )cos( ),( z * d )sen( )) d Em representação matricial: x 1 y 0 z 0 1 0 0 d cos( ) 1 d sen( ) 0 0 0 0 0 0 0 1 x x (( z * d ) cos( )) y y (( z * d ) sen( )) z 0 1 1 Para exemplificar a aplicação da matriz de projeção oblíqua, seja d=1, sem alteração da dimensão do versor, o que significa (=45.0), e =45.0, o que define uma matriz de projeção obliqua cavalier. MO 1 0 0 0 0 1 0 0 2 /2 2 /2 0 0 0 0 0 1 Exemplo: MO 1 0 0 0 0 1 0 0 2 /2 2 /2 0 0 0 0 0 1 Y Y' F B C G F B H D PO M O PO 1 0 0 1 A 1 0 0 1 A 1 1 1 0 0 0 0 1 1/ 2 0 0 1 1/ 2 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 B C D E F G H 1 (2 1 (1 0 1 B 2) / 2 ( 2 2) / 2 2) / 2 2 /2 0 0 1 1 C D G H E C A D Z 0 0 0 1 E 0 2 /2 1 (1 2 ) / 2 0 0 1 1 F G 2 / 2 2 / 2 0 1 H X E A X' Álgebra das Projeções Planares Perspectivas O ponto P (x,y,z) é projetado no ponto P’ (x’,y’,0), contido no plano xy, a partir de um centro de projeção localizado no ponto C (0,0,k). Aplicando-se a semelhança de triângulos e considerando-se que a coordenada z tem valor negativo obtém-se: x / k x / ( z k ) x x / (( z / k ) 1) y / k y / ( z k ) y y / (( z / k ) 1) X 1 Y 0 Z 0 H 0 0 0 1 0 0 1 0 1/ k 0 0 0 1 x x y y z z 1 ( z / k ) 1 P Y y x X / H x / (( z / k ) 1) y Y / H y / (( z / k ) 1) z Z / H z / (( z / k ) 1) 1 1 1 y' k Z CP P’ x z x' X x X / H x / (( z / k ) 1) y Y / H y / (( z / k ) 1) z Z / H z / (( z / k ) 1) 1 1 1 • • • Quando se adota o plano xy como o plano de projeção, desconsidera-se o valor de z’. Nota-se que nesta equação se k , então x x e y y , o que origina uma projeção paralela, com raios projetores perpendiculares ao plano de projeção xy. Considerando-se x = at, y = bt e z = -ct, com a, b, e c maiores que zero: x at / (( ct / k ) 1) y bt / (( ct / k ) 1) z ct / (( ct / k ) 1) 1 1 e se t x ka / c tem-se: y kb / c z k 1 1 O ponto (ka/c, kb/c, -k) constitui um ponto-de-fuga, dado que ele é um ponto finito para o qual converge a projeção de uma linha infinita. Dependendo do valor de a, b e c, dado k fixo, infinitos pontos-de-fuga podem ser determinados. Em termos de classificação da projeção perspectiva interessa apenas os pontos-de-fuga associados às linhas paralelas aos eixos cartesianos. Assim, considere-se: v1 , v2 e v3 que definem, respectivamente, linhas paralelas aos eixos x, y e z. cujas projeções são obtidas por: at a a b bt b v1 , v2 , v3 c c ct 1 1 1 at / (( c / k ) 1) a / (( c / k ) 1) a / (( ct / k ) 1) bt / (( c / k ) 1) b / (( ct / k ) 1) b / (( c / k ) 1) , v v1 , v2 3 c / (( c / k ) 1) c / (( c / k ) 1) ct / (( ct / k ) 1) 1 1 1 e quando t resulta em: B 1 v1 C1 1 A2 v2 C2 1 0 0 v3 k 1 v v • Mesmo sendo B1, C1, A2 e C2 constantes finitas, 1 e 2 • • resultam em pontos que no espaço tendem ao infinito, ou seja, não há pontos-de-fuga associados às linhas paralelas aos eixos x e y. v v Este resultado é esperado, pois 1 e 2 definem linhas perpendiculares ao eixo z que contém o centro-de-projeção. A transformação perspectiva de v3 resulta em um ponto finito no espaço, ou seja, há ponto-de-fuga. B 1 v1 C1 1 A2 v2 C2 1 0 0 v3 k 1 y b c z v3 v2 v1 a x • Os pontos A’ e B’ são as projeções no plano xy dos pontos AB da linha A-B perpendicular ao plano de projeção. • Nota-se que considerando a coordenada z, os pontos A* e B* mostram como a transformação perspectiva força a convergência dos pontos transformados para o ponto-de-fuga. • • B A Para t=0, resulta no ponto PI (a, b, 0), que é o ponto que a linha AB estendida intercepta o plano. y Os pontos A* e B* estão na linha PI-PF e, assim, quando B, B*PF e B’(0,0), o que faz com que todos os pontos projetados no plano estejam na linha limitada pelos pontos (a,b) e (0,0). PI A’ A* B* B’ PF -k x z k Nota-se que estes mesmos resultados são obtidos quando se aplica a matriz de transformação perspectiva sobre pontos infinitos: 1 0 0 0 1 0 v1 , v2 , v3 0 0 1 0 0 0 Aplicando-se as equações: X 1 0 0 Y 0 1 0 Z 0 0 1 H 0 0 1 / k resulta em: 0 0 0 1 x x y y z z 1 ( z / k ) 1 x X / H x / (( z / k ) 1) y Y / H y / (( z / k ) 1) z Z / H z / (( z / k ) 1) 1 1 1 1 0 0 0 1 0 v1 , v2 , v3 0 0 k 0 0 1 • • A certificação do número de pontos-de-fuga das matrizes é obtida através da aplicação dos pontos infinitos em coordenadas homogêneas. Assim, inicialmente, utilizando-se a matriz MTPxy e os pontos definidos pelos vetores infinitos, tem-se: r 0 0 0 s 0 v1 , v2 , v3 0 0 1 1 1 0 • • Como foram gerados dois pontos-de-fuga, a matriz MTPxy é uma matriz de transformação perspectiva de dois pontos-de-fuga. Similarmente, aplicando-se a matriz MTPxyz sobre os pontos no infinitos tem-se: r 0 0 0 s 0 v1 , v2 , v3 0 0 k 1 1 1 • Logo, a matriz MTPxyz é uma matriz de transformação perspectiva de três pontos-de-fuga. • • • • O objetivo primordial em se utilizar uma projeção perspectiva é a obtenção de uma visão realística de um objeto. A simples aplicação da projeção perspectiva não garante este objetivo. Por exemplo, a figura abaixo mostra o resultado de uma projeção perspectiva com pontos-de-fuga (3,0,0) e (0,3,0). Neste caso, a qualidade visual desta projeção deixa muito a desejar. y y’ x z x’ • • • • Uma maneira de resolver este problema é utilizar a projeção perspectiva associada às transformações de mudança de escala e rotação. A figura abaixo mostra uma nova visão do objeto quando ele é rotacionado em torno dos eixos x e y e posteriormente projetado através de uma matriz de projeção perspectiva de dois pontos-de-fuga. Neste caso, é possível se ter uma visão completa do objeto e dos pontos-defuga. Nota-se, em especial, como as linhas paralelas convergem para o mesmo ponto-de-fuga após a projeção. PF-1 PF-2 • Em termos de computação gráfica, o foco de interesse é a projeção de um ponto no espaço sobre o plano da tela. • Neste sentido, para ilustrar uma forma mais intuitiva de se obter as equações anteriores, será deduzido a matriz de projeção perspectiva a partir da consideração de que a tela do computador está sobre o plano xy e que o centro de projeção (observador) está fora deste plano e em alguma parte positiva do eixo z. y P1 P2 x CP z Supondo-se conhecido P1 e CP, pode-se escrever a equação de reta que passa por estes dois pontos: x xc ( x1 xc )u y yc ( y1 yc )u y P1 z zc ( z1 zc )u P2 Logo, o valor de u para P2, com coordenadas (x2,y2,0), é: Portanto, u zc / ( z1 zc ) x2 xc zc ( x1 xc ) / ( z1 zc ) y2 yc zc ( y1 yc ) / ( z1 zc ) e tem-se a matriz: zc 0 0 z c MP 0 0 0 0 xc 0 yc 0 0 0 1 zc x CP z zc 0 0 z c MP 0 0 0 0 • xc 0 yc 0 0 0 1 zc Dividindo-se todos os elementos da matriz MP por um mesmo valor não se altera o resultado da sua aplicação sobre um vetor em coordenadas homogêneas. Assim, dividindo-se todos os elementos por 1/zc tem-se: 1 0 MP 0 0 0 x c / zc 1 y c / zc 0 0 0 1 / zc 0 0 0 1 1 0 MP 0 0 • 0 0 0 1 Considerando-se xc e yc iguais a zero na MP , tem-se: 1 0 MP 0 0 • 0 x c / zc 1 y c / zc 0 0 0 1 / zc 0 0 1 0 0 0 0 1 / zc 0 0 0 1 que é a matriz de transformação perspectiva MTPz, deduzida anteriormente, no caso do centro de projeção estar no ponto (0,0,zc). A matriz MP gera apenas um ponto-de-fuga. Para a geração de mais pontos-de-fuga pode-se associar MP com matrizes de rotação. Nota-se que, caso se rotacione um objeto é possível obter um número maior de pontos-de-fuga. Assim, fazendo-se a multiplicação da matriz MP pela matriz RxRy cos( ) 0 sen( ) 0 0 sen( ) 0 1 0 0 0 cos( ) 0 0 0 1 cos( ) 0 sen( ) sen( ) sen( ) cos( ) cos( ) sen( ) RY sen( ) cos( ) sen( ) cos( ) cos( ) 0 0 0 0 0 0 1 ( xc / zc) sen( ) sen( ) ( xc / zc) cos( ) cos( ) cos( ) ( xc / zc) sen( ) cos( ) sen( ) sen( ) ( yc / zc) sen( ) cos( ) cos( ) ( yc / zc) sen( ) cos( ) sen( ) ( yc / zc) cos( ) cos( ) MPR 0 0 0 (1 / zc) sen( ) cos( ) ( 1 / zc) sen( ) ( 1 / zc) cos( ) cos( ) 0 0 0 1 RX 0 0 1 0 cos( ) sen( ) RY 0 sen( ) cos( ) 0 0 0 0 0 0 1 RX tem-se a equação: Supondo-se zc, sen(), sen(), cos(), cos() diferentes de zero, deriva-se os seguintes pontos-de-fuga: xc zc(cos( ) / (sen( ) cos( ))) PFx y c z c (sen( ) / cos( )) xc PFy y c z c (cos( ) / sen( )) xc zc(sen( ) / (cos( ) cos( ))) PFz y c z c (sen( ) / cos( )) Assim, utilizando-se a matriz MPR tem-se o controle simultâneo do centro de projeção e dos pontos-de-fuga. Esta matriz pode ser modificada para incorporar rotações no eixo z.