Apostila de Computa¸˜o Gr´fica                   ca    a     Agma Juci Machado Traina   Maria Cristina Ferreira de Oliveira...
ResumoEste ´ o material utilizado no Instituto de Ciˆncias matem´ticas e de Computa¸˜o da USP-S˜o Carlos     e            ...
Sum´rio   aSum´rio   a                                                                                                    ...
4 Preenchimento de Pol´   ıgonos                                                                                          ...
12 Processamento Digital de Imagens                                                                                       ...
Lista de Figuras 1.1    Relacionamento entre as 3 sub´reas da Computa¸˜o Gr´fica. . . . . . . . . . . . . . . . .          ...
5.3    Esta figura mostra a rota¸˜o da casa por 45◦ . Da mesma forma que para a escala, a rota¸˜o                          ...
11.2   Ilustra¸˜o da mistura de cores aditivas [For94]. . . . . . . . . . . . . .              ca                         ...
Cap´   ıtulo 1Introdu¸˜o ` Computa¸˜o Gr´fica       ca a         ca    aA Computa¸˜o Gr´fica ´ a ´rea da ciˆncia da computa¸...
outras. Nelas, o que existe em comum ´ que a representa¸˜o gr´fica (superf´                                               e...
dronizada foi o GKS - Graphical Kernel System, pela ANSI e ISO em 1985. O GKS ´ uma vers˜o maise       aelaborada que o Co...
de representa¸˜es gr´ficas. Como resultado, surgiram anima¸˜es computadorizadas do comporta-                    co     a   ...
Figura 1.2: Esquema b´sico de um hardware de computa¸˜o gr´fica.                                      a                    ...
0 ≤ ndcy ≤ 1                                            (1.4)   A coordenada NDC (0, 0) corresponde ` origem (0, 0) nas co...
1.6     Exerc´             ıciosEscreva os procedimentos inp to ndc, ndc to user, user to ndc e ndc to dc, que transformam...
Cap´   ıtulo 2Dispositivos de Visualiza¸˜o                         caToda imagem criada atrav´s de recursos computacionais...
Figura 2.1: Estrutura interna de um CRT.feixe. A fun¸˜o do sistema de deflex˜o ´ dirigir controladamente o feixe de el´tron...
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Apostila de computação gráfica (2006)
Upcoming SlideShare
Loading in …5
×

Apostila de computação gráfica (2006)

1,720 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,720
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
91
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Apostila de computação gráfica (2006)

  1. 1. Apostila de Computa¸˜o Gr´fica ca a Agma Juci Machado Traina Maria Cristina Ferreira de Oliveira 16 de maio de 2006
  2. 2. ResumoEste ´ o material utilizado no Instituto de Ciˆncias matem´ticas e de Computa¸˜o da USP-S˜o Carlos e e a ca apara as disciplinas de computa¸˜o gr´fica ministradas pelas Profa. Dra. Agma Juci Machado Traina e ca aProfa. Dra. Maria Cristina Ferreira de Oliveira.
  3. 3. Sum´rio aSum´rio a 2Lista de Figuras 51 Introdu¸˜o ` Computa¸˜o Gr´fica ca a ca a 8 1.1 Sistemas Gr´ficos . . . . . . . . . . a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2 Aplica¸˜es da CG . . . . . . . . . . co . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3 Hardware Gr´fico . . . . . . . . . . a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.4 Resolu¸˜o Gr´fica . . . . . . . . . . ca a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.5 Sistemas de Coordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Dispositivos de Visualiza¸˜o ca 15 2.1 Dispositivos Gr´ficos Vetoriais . . . . . . . . . . . . . . . . . . . . . . a . . . . . . . . . . . 15 2.1.1 Tra¸adores Digitais . . . . . . . . . . . . . . . . . . . . . . . . . c . . . . . . . . . . . 15 2.1.2 Dispositivos de V´ ıdeo Vetoriais (Vector Refresh Display Tubes) . . . . . . . . . . . 15 2.1.3 Terminais CRT com mem´ria (Direct View Storage Tubes) . . o . . . . . . . . . . . 17 2.2 Primitivas de Software para Dispositivos Vetoriais . . . . . . . . . . . . . . . . . . . . . . 17 2.3 Dispositivos Gr´ficos Matriciais . . . . . . . . . . . . . . . . . . . . . . a . . . . . . . . . . . 17 2.3.1 Impressoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3.2 Dispositivos de V´ ıdeo de Varredura (Raster Scanning VDUs) . . . . . . . . . . . . 18 2.3.3 Primitivas de Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.4 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.5 Dispositivos de Entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.5.1 Teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.5.2 Ligth Pen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.5.3 Joystick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.5.4 Mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.5.5 Mesa Digitalizadora (Tablet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.5.6 Data Glove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.5.7 Outros dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Tra¸ado de Curvas em Dispositivos Gr´ficos Matriciais c a 23 3.1 Simetria e Reflex˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 24 3.2 Convers˜o Matricial de Segmentos de Reta . . . . . . . . . . . . . . . . . . . . . . . . . . a 24 3.2.1 Caracter´ ısticas Desej´veis para os Algoritmos de convers˜o Matricial de Segmentos a a de Retas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2.2 Crit´rio Adotado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 25 3.2.3 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.4 Algoritmo do “Ponto-M´dio” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 26 3.3 Convers˜o Matricial de Circunferˆncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a e 29 3.3.1 Simetria de ordem 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3.2 Algoritmo do “Ponto-M´dio” para Circunferˆncias . . . . . . . . . . . . . . . . . . e e 31 3.4 Convers˜o Matricial de Elipses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 34 3.5 Corre¸˜o no Tra¸ado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca c 37 3.6 Antialising . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 ´ 3.6.1 Amostragem de Areas n˜o Ponderada . . . . . . . . . . . . . . . . . . . . . . . . . a 38 2
  4. 4. 4 Preenchimento de Pol´ ıgonos 42 4.1 Retˆngulos . . . . . . . . . . . . . . . . . . . . . . . . . . . a . . . . . . . . . . . . . . . . . 42 4.2 Pol´ıgonos de Forma Arbitr´ria . . . . . . . . . . . . . . . . a . . . . . . . . . . . . . . . . . 43 4.2.1 Arestas Horizontais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2.2 Slivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.3 Algoritmo para Convers˜o Matricial de Segmento de a Reta que Utiliza “Coerˆncia e de Arestas” de um Pol´ ıgono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 Transforma¸˜es 2D e 3D co 50 5.1 Transforma¸˜es em 2D . . . . . . . . . . . . . . . . . . . . . . . . co . . . . . . . . . . . . . . 50 5.2 Coordenadas Homogˆneas e Matrizes de Transforma¸˜o . . . . . e ca . . . . . . . . . . . . . . 52 5.3 Transforma¸˜es 2D Adicionais: Espelhamento e Shearing . . . . co . . . . . . . . . . . . . . 55 5.3.1 Espelhamento (Mirror) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.3.2 Shearing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.4 Transforma¸˜es entre sistemas de coordenadas . . . . . . . . . . co . . . . . . . . . . . . . . 57 5.5 Composi¸˜o de Transforma¸˜es . . . . . . . . . . . . . . . . . . . ca co . . . . . . . . . . . . . . 58 5.6 Transforma¸˜o Janela - Porta de Vis˜o (“Window-to-Viewport”) ca a . . . . . . . . . . . . . . 59 5.7 Eficiˆncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . 61 5.8 Transforma¸˜es em 3D . . . . . . . . . . . . . . . . . . . . . . . . co . . . . . . . . . . . . . . 63 5.8.1 Composi¸˜o de Transforma¸˜es em 3D . . . . . . . . . . . ca co . . . . . . . . . . . . . . 646 Observa¸˜o de Cenas 3D ca 69 6.1 Pipeline de observa¸˜o (“viewing pipeline”) . . . . . . . . . . . . . . . . . . . . . . . . . . ca 69 6.2 Coordenadas de Observa¸˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca 70 6.2.1 Especifica¸˜o do sistema de coordenadas de observa¸˜o . . . . . . . . . . . . . . . ca ca 70 6.2.2 Transforma¸˜o do sistema de coordenadas do mundo para o sistema de coordenadas ca de observa¸˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca 71 6.3 Proje¸˜es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . co 73 6.3.1 Proje¸˜o Perspectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca 73 6.3.2 Desenvolvimento Matem´tico para Proje¸˜es Paralelas . . . . . . . . . . . . . . . . a co 777 Recorte de Primitivas 2D 78 7.1 Recorte de segmentos de reta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 7.1.1 Recorte de Pontos Extremos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 7.1.2 Algoritmo de Cohen-Sutherland para Recorte de Segmentos de Reta . . . . . . . . 79 7.2 Recorte de Circunferˆncias . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . 818 Curvas e Superf´ ıcies em Computa¸˜o Gr´fica ca a 86 8.1 Representa¸˜o de Curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . ca . . . . . . . . . . 86 8.2 Curve Fitting x Curve Fairing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 8.2.1 Ajuste de curvas (curve fitting) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 8.2.2 Aproxima¸˜o de curvas (curve fairing) . . . . . . . . . . . . . . . ca . . . . . . . . . . 87 8.3 Representa¸˜es Param´tricas e N˜o Param´tricas (expl´ co e a e ıcita e impl´ıcita) . . . . . . . . . . 87 8.3.1 Limita¸˜es das representa¸˜es n˜o param´tricas . . . . . . . . . . co co a e . . . . . . . . . . 88 8.4 Curvas de B´zier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . 909 Apostila Modelagem 9310 Rendering 9411 Cores e Sistemas de Cores 95 11.1 Percep¸˜o de Cor . . . . . . . . . . . . . . ca . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 11.2 Sistemas de Cores Prim´rias . . . . . . . . a . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 11.3 Modelo XYZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 11.4 Modelo RGB (Red, Green, Blue) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 11.5 Modelo HSV (Hue, Saturation, Value) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 11.6 Modelo HLS (Hue, Lightness, Saturation) . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 3
  5. 5. 12 Processamento Digital de Imagens 102 12.1 Introdu¸˜o . . . . . . . . . . . . . . . . . . ca . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 12.2 Considera¸˜es Sobre Imagens . . . . . . . co . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 12.3 Tabelas “Look-up” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 12.4 Tipos de Manipula¸˜o de Imagens . . . . ca . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 12.5 Transforma¸˜es Radiom´tricas . . . . . . co e . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 12.5.1 Opera¸˜es Pontuais sobre Imagens co . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 12.5.2 Opera¸˜es Locais Sobre a Imagem co . . . . . . . . . . . . . . . . . . . . . . . . . . . 107Bibliografia 113A Hist´rico o 114 4
  6. 6. Lista de Figuras 1.1 Relacionamento entre as 3 sub´reas da Computa¸˜o Gr´fica. . . . . . . . . . . . . . . . . a ca a 8 1.2 Esquema b´sico de um hardware de computa¸˜o gr´fica. . . . . . . . . . . . . . . . . . . . a ca a 12 1.3 Sistemas de coordenadas e suas transforma¸˜es. . . . . . . . . . . . . . . . . . . . . . . . . co 13 2.1 Estrutura interna de um CRT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.2 Convers˜o Digital-Anal´gica para Visualiza¸˜o num CRT. . . . . . . . . . . . . . . . . . . a o ca 16 2.3 Uma seq¨ˆncia de bits na mem´ria de imagem ´ convertida para uma seq¨ˆncia de pixels ue o e ue na tela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.4 Representa¸˜o esquem´tica de uma imagem matricial e sua representa¸˜o num frame buffer. ca a ca 18 2.5 Varredura por rastreio fixo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.6 Representa¸˜o esquem´tica de um CRT por varredura colorido. . . . . . . . . . . . . . . . ca a 19 2.7 Organiza¸˜o de uma v´ ca ıdeo look-up table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.1 Representa¸˜o de segmentos de reta horizontais, verticais e diagonais. . . . . . . . . . . . ca 23 3.2 Reflex˜o de uma imagem com rela¸˜o a um eixo diagonal. . . . . . . . . . . . . . . . . . . a ca 24 3.3 Rota¸˜o de 90o obtida atrav´s de 2 reflex˜es, uma horizontal (a) e outra na diagonal (b). ca e o 24 3.4 Convers˜es matriciais de um segmento de reta resultante de diferentes crit´rios. . . . . . . o e 25 3.5 Imagens de segmentos de reta convertidos pelo crit´rio expl´ e ıcito acima. . . . . . . . . . . . 26 3.6 Grade de pixels para o Algoritimo o Ponto-M´dio (M) e as escolhas E e NE. . . . . . . . . e 27 3.7 Grade de pixels para o Algoritimo o Ponto-M´dio (M) e as escolhas E e NE. . . . . . . . . e 29 3.8 Um arco de 1 de circunferˆncia, obtido variando-se x em incrementos unit´rios, e calcu- 4 e a lando e arrendondando y. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.9 Oito pontos sim´tricos em uma circunferˆncia. . . . . . . . . . . . . . . . . . . . . . . . . e e 31 3.10 Malha de pixels para o Algoritmo do Ponto-M´dio para circunferˆncias, ilustrando a escolha e e entre os pixels E e SE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.11 Segundo octante da circunferˆncia gerado com o algor´ e ıtimo do Ponto-M´dio e primeiro e octante gerado por simetria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.12 Elipse padr˜o centrada na origem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 36 3.13 As duas regi˜e adotadas, definidas pela tangente a 45o . . . . . . . . . . . . . . . . . . . . . o 36 3.14 Segmento de reta renderizado com o algor´ ıtmo do ponto m´dio em diferentes escalas. (a) e ´ uma aplia¸˜o da regi˜o central de (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . e ca a 38 3.15 Segmento de reta definido com uma espessura diferente de zero. . . . . . . . . . . . . . . . 39 3.16 A intensidade do pixel ´ proporcional ` area coberta. . . . . . . . . . . . . . . . . . . . . . e a 39 3.17 Filtro definido por um cubo para um pixel definido por um quadrado. . . . . . . . . . . . 40 3.18 Filtro cˆnico com diˆmetro igual ao dobro da largura de um pixel. . . . . . . . . . . . . . o a 40 4.1 Esta figura ilustra o processo de linha de varredura para um pol´ ıgono arbitr´rio. As a intersec¸˜es da linha de varredura 8 com os lados FA e CD possuem coordenadas inteiras, co enquanto as intersec¸˜es com os lados EF e DE possuem coordenadas reais. . . . . . . . . co 43 4.2 Linhas de varredura em um pol´ ıgno. Os extremos em preto, e os pixels no interior em cinza. (a) Extremo calculado pelo algoritmo do ”Meio-Ponto”. (b) Extremo interior ao pol´ ıgno. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.3 Tratamento dos lados horizontais de um pol´ ıgono. . . . . . . . . . . . . . . . . . . . . . . 45 4.4 Exemplo de uma convers˜o matricial de um Sliver . . . . . . . . . . . . . . . . . . . . . . a 46 4.5 ET para o pol´ıgono de Figura 4.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.6 AET para o pol´ ıgono da Figura 4.1 a) linha de varredura 9 b) linha de varredura 10. Note que a coordenada x da aresta DE em (b) foi arredondada para cima.. . . . . . . . . . . . . 48 5.1 Transla¸˜o de uma casa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca 51 5.2 Mudan¸a de escala de uma casa. Como a escala ´ n˜o uniforme, sua propor¸˜o ´ alterada. c e a ca e 51 5
  7. 7. 5.3 Esta figura mostra a rota¸˜o da casa por 45◦ . Da mesma forma que para a escala, a rota¸˜o ca ca tamb´m ´ feita em rela¸˜o a origem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e e ca 525.4 Derivando a equa¸˜o de rota¸˜o. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca ca 525.5 O espa¸o de Coordenadas Homogˆneas XY W , com o plano W = 1 e o ponto P (X, Y, W ) c e projetado sobre o plano W = 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535.6 Um cubo unit´rio ´ rodados 45 graus, posteriormente escalado n˜o uniformemente. Obtem- a e a se dessa forma uma transforma¸˜o afim. . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca 545.7 Reflex˜o de um objeto em torno do eixo x. . . . . . . . . . . . . . . . . . . . . . . . . . . a 555.8 Reflex˜o de um objeto em torno de um eixo perpendicular ao plano xy, passando pela origem. a 565.9 Rota¸˜o em rela¸˜o ao Ponto P 1, por um ˆngulo θ. . . . . . . . . . . . . . . . . . . . . . . ca ca a 585.10 Escala e rota¸˜o de uma casa em rela¸˜o ao ponto P1 . . . . . . . . . . . . . . . . . . . . . ca ca 595.11 Janela em Coordenadas do mundo e porta de vis˜o em coordenadas de tela. . . . . . . . . a 605.12 Duas portas de vis˜o associadas a mesma janela. . . . . . . . . . . . . . . . . . . . . . . . a 605.13 Os passos da transforma¸˜o janela - porta de vis˜o. . . . . . . . . . . . . . . . . . . . . . . ca a 615.14 Primitivas gr´ficas de sa´ em coordenadas do mundo s˜o recortadas pela janela. O seu a ıda a interior ´ apresentado na tela (viewport). . . . . . . . . . . . . . . . . . . . . . . . . . . . e 615.15 Sistema de Coordenadas dado pela Regra da M˜o Direita. . . . . . . . . . . . . . . . . . . a 635.16 Transformando P1 , P2 e P3 da posi¸˜o inicial em (a) para a posi¸˜o final em (b). . . . . . ca ca 655.17 Rota¸˜o dos pontos P1 , P2 e P3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca 665.18 Rota¸˜o em rela¸˜o ao eixo x. P1 e P2 de comprimento D2 ´ rotacionado em dire¸˜o ao ca ca e ca eixo z, pelo ˆngulo positivo f. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 665.19 Rota¸˜o em rela¸˜o ao eixo z. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca ca 675.20 Os vetores unit´rios Rx , Ry e Rz , os quais s˜o transformados nos eixos principais. . . . . a a 686.1 Atributos da cˆmera [Schr¨eder, 1998]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a o 696.2 Movimentos de cˆmera [Schr¨eder, 1998]. . . . . . . . . . . . . . . . . . . . . . . . . . . . a o 706.3 Movimentos de cˆmera [Schr¨eder, 1998]. . . . . . . . . . . . . . . . . . . . . . . . . . . . a o 716.4 Um VCS baseado na regra da m˜o direita com xv , yv e zv .relativos ao sistema de coorde- a nadas do mundo [Hearn and Baker, 1994]. . . . . . . . . . . . . . . . . . . . . . . . . . . . 716.5 Orienta¸˜es do plano de observa¸˜o conforme o vetor normal. O vetor (1, 0, 0) d´ a ori- co ca a enta¸˜o em (a) e (1, 0, 1), a orienta¸˜o em (b) [Hearn and Baker, 1994]. . . . . . . . . . . ca ca 726.6 Taxomia de proje¸˜es [Plastock and Kalley, 1999]. . . . . . . . . . . . . . . . . . . . . . . co 736.7 Linha AB e sua proje¸˜o A’B’: (a) perspectiva; (b) ortogonal. . . . . . . . . . . . . . . . . ca 736.8 Proje¸˜es de um cubo (com 1 ponto de fuga) sobre um plano cortando o eixo Z, apresen- co tando o ponto de fuga. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746.9 Proje¸˜es perspectivas com 2 pontos de fuga ( o plano de proje¸˜o intercepta 2 eixos (x e co ca z)). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746.10 Proje¸˜es perspectivas com 3 pontos de fuga ( o plano de proje¸˜o intercepta os 3 eixos). co ca 756.11 A esfera B ´ bem maior que a esfera A, por´m ambas aparecem com o mesmo tamanho e e quando projetadas no plano de vis˜o. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 756.12 Confus˜o visual da perpectiva (objeto atr´s do centro de proje¸˜o). . . . . . . . . . . . . . a a ca 766.13 Proje¸˜o em perspectiva de um ponto P=(x, y, z) na posi¸˜o (xp, yp, zp) sobre o plano ca ca de proje¸˜o [Hearn and Baker, 1994]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca 766.14 Proje¸˜o ortogonal de um ponto no plano de proje¸˜o [Hearn and Baker, 1994]. . . . . . . ca ca 777.1 Exemplos de recorte de segmentos de reta. . . . . . . . . . . . . . . . . . . . . . . . . . . . 787.2 C´digos das regi˜es. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o 807.3 Funcionamento do algoritmo de Cohen-Sutherland para recorte de segmentos. . . . . . . . 807.4 Algoritmo de Sutherland-Hodgman para Recorte de Pol´ ıgonos. . . . . . . . . . . . . . . . 837.5 Exemptos de recorte de pol´ıgonos. (a) M´ltiplos componentes. (b) Caso convexo (c) Caso u cˆncavo com muitas arestas exteriores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 837.6 Quatro situa¸˜es poss´ co ıveis no recorte de pol´ ıgonos. . . . . . . . . . . . . . . . . . . . . . . 848.1 Representa¸˜o de superf´ ca ıcies atrav´s de malhas. . . . . . . . e . . . . . . . . . . . . . . . . . 868.2 Aproxima¸˜o de curvas por segmentos de reta conectados. . ca . . . . . . . . . . . . . . . . . 878.3 Aproxima¸˜o de curvas por segmentos de reta conectados. . ca . . . . . . . . . . . . . . . . . 888.4 Pontos de uma circunferˆncia. . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . 908.5 Representa¸˜o de uma curva de B´zier definida pelos pontos ca e B0 , B1 , B2 e B3 . . . . . . . . 908.6 Fun¸˜es de blending para v´rios valores de n. . . . . . . . . co a . . . . . . . . . . . . . . . . . 9111.1 Espectro eletromagn´tico [Gro94]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 95 6
  8. 8. 11.2 Ilustra¸˜o da mistura de cores aditivas [For94]. . . . . . . . . . . . . . ca . . . . . . . . . . . 9711.3 Ilustra¸˜o da mistura de cores subtrativas [For94]. . . . . . . . . . . . ca . . . . . . . . . . . 9711.4 Ilustra¸˜o da obten¸˜o de tints, shades e tones. . . . . . . . . . . . . . ca ca . . . . . . . . . . . 9711.5 Diagrama de cromaticidade do CIE [Hea94]. . . . . . . . . . . . . . . . . . . . . . . . . . . 9811.6 Representa¸˜o de escalas de cor no diagrama de cromaticidade do CIE ca [Hea94]. . . . . . . 9911.7 Cubo do RGB [Fol96]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10011.8 Cone hexagonal do HSV [Fol96]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10011.9 Cone duplo do HLS [Fol96]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10112.1 Efeitos sobre uma imagem, de se reduzir o tamanho da grade de amostragem. . . . . . . . 10312.2 Uma imagem de 512 x 512 pixels, quantizada em (a) 256 n´ ıveis, (b) 128 n´ ıveis, (c) 64 n´ ıveis, (d) 32 n´ ıveis, (e) 16 n´ ıveis, (f) 8 n´ıveis, (g) 4 n´ ıveis e (h) 2 n´ıveis de cinza. . . . . . 10412.3 Representa¸˜o de um pixel P com 8-bits (8 planos) de profundidade. . . . . . . . . . . . . ca 10412.4 Organiza¸˜o de uma LUT, para um sistema de pixels de 8 bits. . . . . . . . . . . . . . . . ca 10512.5 Imagens e histogramas de intensidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10612.6 Efeito de uma transforma¸˜o dos n´ ca ıveis de cinza efetuado sobre o histograma. . . . . . . . 10712.7 Manipula¸˜o de janelas de intensidade da imagem atrav´s do histograma. . . . . . . . . . ca e 10712.8 Sinais “ru´ıdo” (a) e “degrau” (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10912.9 Sinais “ru´ıdo” (a) e “degrau” (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10912.10Efeitos de filtros lineares ao “ru´ ıdo” e ` “borda”: (a) efeitos de atenua¸˜o; (b) borramento a ca da borda; (c) amplia¸˜o do ru´ ca ıdo; (d) realce da borda. . . . . . . . . . . . . . . . . . . . . 11012.11Efeito do filtro da mediana sobre o “ru´ ıdo” e o “degrau”. . . . . . . . . . . . . . . . . . . 11012.12Uma transforma¸˜o geom´trica de 90o graus. . . . . . . . . . . . . . . . . . . . . . . . . . . ca e 111 7
  9. 9. Cap´ ıtulo 1Introdu¸˜o ` Computa¸˜o Gr´fica ca a ca aA Computa¸˜o Gr´fica ´ a ´rea da ciˆncia da computa¸˜o que estuda a gera¸˜o, manipula¸˜o e inter- ca a e a e ca ca capreta¸˜o de modelos e imagens de objetos utilizando computador. Tais modelos vˆm de uma variedade ca ede disciplinas, como f´ ısica, matem´tica, engenharia, arquitetura, etc. a Pode-se relacionar a Computa¸˜o Gr´fica com 3 sub-´reas [Persiano and Oliveira, 1989]: ca a a • S´ ıntese de Imagens: ´rea que se preocupa com a produ¸˜o de representa¸˜es visuais a partir a ca co co e ´ das especifica¸˜es geom´trica e visual de seus componentes. E freq¨entemente confundida com a u pr´pria Computa¸˜o Gr´fica. As imagens produzidas por esta sub-´rea s˜o geradas a partir de o ca a a a dados mantidos nos chamados Display-Files. • Processamento de Imagens: envolve as t´cnicas de transforma¸˜o de Imagens, em que tanto e ca a imagem original quanto a imagem resultado apresentam-se sob uma representa¸˜o visual (ge- ca ralmente matricial). Estas transforma¸˜es visam melhorar as caracter´ co ısticas visuais da imagem (aumentar contraste, foco, ou mesmo diminuir ru´ ıdos e/ou distor¸˜es). As imagens produzi- co das/utilizadas por esta sub-´rea s˜o armazenadas/recuperadas dos chamados Raster-Files. a a • An´lise de Imagens: ´rea que procura obter a especifica¸˜o dos componentes de uma imagem a a a ca partir de sua representa¸˜o visual. Ou seja a partir da informa¸˜o pict´rica da imagem (a pr´pria ca ca o o imagem!) produz uma informa¸˜o n˜o pict´rica da imagem (por exemplo, as primitivas geom´tricas ca a o e elementares que a comp˜em). o Figura 1.1: Relacionamento entre as 3 sub´reas da Computa¸˜o Gr´fica. a ca a Na ultima d´cada somou-se a esse contexto a ´rea de Visualiza¸˜o de Dados, tamb´m chamada ´ e a ca eVisualiza¸˜o Computacional [Minghim and Oliveira, 1997, Schr¨eder et al., 1996], que usa t´cnicas de ca o eComputa¸˜o Gr´fica para representar informa¸˜o, de forma a facilitar o entendimento de conjuntos de ca a cadados num´ricos de alta complexidade. Exemplos de ´reas de aplica¸˜o s˜o: visualiza¸˜o de imagens e a ca a cam´dicas, meteorologia, dados financeiros, visualiza¸˜o de programas, dinˆmica dos fluidos, e muitas e ca a 8
  10. 10. outras. Nelas, o que existe em comum ´ que a representa¸˜o gr´fica (superf´ e ca a ıcies, part´ıculas, ´ ıcones) s˜oageradas automaticamente a partir do conjunto de dados. Ao usu´rio cabe definir parˆmetros e atributos a ada imagem para melhor “navegar” seu conjunto de dados. Dessa maneira, a visualiza¸˜o de dados partilha cade caracter´ısticas da s´ ıntese, do processamento e da an´lise de dados. a Atualmente a Computa¸˜o Gr´fica ´ altamente interativa: o usu´rio controla o conte´do, a estrutura ca a e a ue a aparˆncia dos objetos e suas imagens visualizadas na tela, usando dispositivos como o teclado e o emouse. Entretanto, at´ o in´ e ıcio dos anos 80, a computa¸˜o gr´fica era uma disciplina restrita e alta- ca amente especializada. Devido principalmente ao alto custo do hardware, poucos programas aplicativosexploravam gr´ficos. O advento dos computadores pessoais de baixo custo, como o IBM-PC e o Apple aMacintosh, com terminais gr´ficos de varredura (raster graphics displays), popularizou o uso de gr´ficos a ana intera¸˜o usu´rio-computador. ca a Os displays gr´ficos de baixo custo possibilitaram o desenvolvimento de in´meros aplicativos baratos a ue f´ceis de usar, que dispunham de interfaces gr´ficas - planilhas, processadores de texto, programas de a adesenho... As interfaces evoluiram e introduziu-se o conceito de desktop - uma met´fora para uma mesa ade trabalho. Nessas interfaces gr´ficas, atrav´s de um gerenciador de janelas (window manager ) o usu´rio a e apode criar e posicionar janelas que atuam como terminais virtuais, cada qual executando aplicativos in-dependentemente. Isso permite que o usu´rio execute v´rios aplicativos simultaneamente, e selecione um a adeles a um simples toque no mouse. ´ Icones (icons) s˜o usados para representar arquivos de dados, progra- amas e abstra¸˜es de objetos de um escrit´rio - como arquivos, caixas de correio (mailboxes), impressoras, co olatas de lixo - nas quais s˜o executadas opera¸˜es an´logas `s da vida real. Para ativar os programas, o a co a ausu´rio pode selecionar ´ a ıcones, ou usar buttons e menus dinˆmicos. Objetos s˜o manipulados diretamente a aatrav´s de opera¸˜es de pointing e clicking feitas com o mouse. Atualmente, mesmo aplicativos que ma- e conipulam texto (como processadores de texto) ou dados num´ricos (como planilhas) usam interfaces desse etipo, reduzindo sensivelmente a intera¸˜o textual por meio de teclados alfanum´ricos. ca e A computa¸˜o gr´fica n˜o ´ mais uma raridade: ´ parte essencial de qualquer interface com o usu´rio, ca a a e e a´ indispens´vel para a visualiza¸˜o de dados em 2D e 3D e tem aplica¸˜es em ´reas como educa¸˜o,e a ca co a caciˆncias, engenharia, medicina, publicidade, lazer, militar, ... e A computa¸˜o gr´fica trata da s´ ca a ıntese de imagens de objetos reais ou imagin´rios a partir de modelos acomputacionais. Processamento de imagens ´ uma ´rea relacionada que trata do processo inverso: a e aan´lise de cenas, ou a reconstru¸˜o de modelos de objetos 2D ou 3D a partir de suas imagens. a ca Note que a s´ ıntese de imagens parte da descri¸˜o de objetos tais como segmentos de reta, pol´ ca ıgonos,poliedros, esferas, etc.; e produz uma imagem que atende a certas especifica¸˜es e que pode, em ultima co ´instˆncia, ser visualizada em algum dispositivo (terminal de v´ a ıdeo, plotter, impressora, filme fotogr´fico...). aAs imagens em quest˜o constituem uma representa¸˜o visual de objetos bi- ou tridimensionais descritos a caatrav´s de especifica¸˜es abstratas. e co O processamento de imagens parte de imagens j´ prontas para serem visualizadas, as quais s˜o trans- a aferidas para o computador por mecanismos diversos - digitaliza¸˜o de fotos, tomadas de uma cˆmera de ca av´ıdeo, ou imagens de sat´lite - para serem manipuladas visando diferentes objetivos. e1.1 Sistemas Gr´ficos aA Computa¸˜o Gr´fica (especialmente as componentes relativas a gr´ficos 3D e a gr´ficos 3D interativos) ca a a adesenvolveu-se de modo bem diverso: de simples programas gr´ficos para computadores pessoais ` pro- a agramas de modelagem e de visualiza¸˜o em workstations e supercomputadores. Como o interesse em CG cacresceu, ´ importante escrever aplica¸˜es que possam rodar em diferentes plataformas. Um padr˜o para e co adesenvolvimento de programas gr´ficos facilita esta tarefa eliminando a necessidade de escrever c´digo a opara um driver gr´fico distinto para cada plataforma na qual a aplica¸˜o deve rodar. Para se padronizar a caa constru¸˜o de aplicativos que se utilizam de recursos gr´ficos e torn´-los o mais independentes poss´ ca a a ıvelde m´quinas, e portanto facilmente port´veis, foram desenvolvidos os chamados Sistemas Gr´ficos. a a a V´rios padr˜es tiveram sucesso integrando dom´ a o ınios espec´ ıficos. Por exemplo, a linguagem Postscriptque se tornou um padr˜o por facilitar a publica¸˜o de documentos est´ticos contendo gr´ficos 2D e textos. a ca a aOutro exemplo ´ o sistema XWindow, que se tornou padr˜o para o desenvolvimento de interfaces gr´ficas e a a2D em workstations UNIX. Um programador usa o X para obter uma janela em um display gr´fico no aqual um texto ou um gr´fico 2D pode ser desenhado. A ado¸˜o do X pela maioria dos fabricantes de a caworkstation significa que um unico programa desenvolvido em X pode ser rodado em uma variedade de ´workstation simplesmente recompilando o c´digo. Outra facilidade do X ´ o uso de redes de computadores: o eum programa pode rodar em uma workstation e ler a entrada e ser exibido em outra workstation, mesmode outro fabricante. Para gr´ficos 3D foram propostos v´rios padr˜es. A primeira tentativa foi o Sistema Core - Core a a oGraphics System - (1977 e 1979) pelos americanos. Mas a primeira especifica¸˜o gr´fica realmente pa- ca a 9
  11. 11. dronizada foi o GKS - Graphical Kernel System, pela ANSI e ISO em 1985. O GKS ´ uma vers˜o maise aelaborada que o Core. O GKS suporta um conjunto de primitivas gr´ficas interrelacionadas, tais como: adesenho de linhas, pol´ ıgonos, caracteres, etc., bem como seus atributos. Mas n˜o suporta agrupamentos ade primitivas hier´rquicas de estruturas 3D. Um sistema relativamente famoso ´ PHIGS (Programmer’s a eHierarchical Interactive Graphics System). Baseado no GKS, PHIGS ´ um padr˜o ANSI. PHIGS (e seu e adescendente, PHIGS+) provˆem meios para manipular e desenhar objetos 3D encapsulando descri¸˜es de e coobjetos e atributos em uma display list. A display list ´ utilizada quando o objeto ´ exibido ou manipu- e elado, uma vantagem ´ a possibilidade de descrever um objeto complexo uma unica vez mesmo exibindo-o e ´v´rias vezes. Isto ´ especialmente importante se o objeto a ser exibido deve ser transmitido por uma a erede de computadores. Uma desvantagem da display list ´ a necessidade de um esfor¸o consider´vel e c apara reespecificar um objeto que est´ sendo modelado interativamente pelo usu´rio. Uma desvantagem a ado PHIGS e PHIGS+ (e GKS) ´ que eles n˜o tˆm suporte a recursos avan¸ados como mapeamento de e a e ctextura. O XWindow ganhou uma extens˜o para o PHIGS, conhecida como PEX, de modo que o X pudesse amanipular e desenhar objetos 3D. Entre outras extens˜es, PEX soma-se de modo imediato ao PHIGS, oassim um objeto pode ser exibido durante a sua defini¸˜o sem a necessidade da display list. O PEX catamb´m n˜o suporta recursos avan¸ados e s´ est´ dispon´ aos usu´rios do XWindow. e a c o a ıvel a O sistema gr´fico mais popular atualmente ´ o OpenGL (GL - Graphics Library) que provˆ carac- a e eter´ısticas avan¸adas e pode ser utilizado em modo imediato ou com display list. OpenGL ´ um padr˜o c e arelativamente novo (sua primeira vers˜o ´ de 1992) e ´ baseado na biblioteca GL das workstations IRIS da a e eSilicon Graphics. Atualmente um cons´rcio de ind´strias ´ respons´vel pela gerenciamento da evolu¸˜o do o u e a caOpenGL. Existe uma implementa¸˜o livre (c´digo fonte dispon´ ca o ıvel) do OpenGL conhecida com MesaGLou Mesa3D. Como os outros sistemas gr´ficos, OpenGL oferece uma interface entre o software e o hardware gr´fico. a aA interface consiste em um conjunto de procedimentos e fun¸˜es que permitem a um programador es- copecificar os objetos e as opera¸˜es que os envolvem produzindo imagens de alta qualidade. Como o coPEX, o OpenGL integra/permite a manipula¸˜o de objetos (desenhos) 3D ao X, mas tamb´m pode ser ca eintegrado em outros sistemas de janela (por exemplo, Windows/NT) ou pode ser usado sem um sistemade janela. OpenGL provˆ controle direto sobre opera¸˜es gr´ficas fundamentais em 3D e 2D, incluindo e co aa especifica¸˜o de parˆmetros como matrizes de transforma¸˜o e coeficientes de ilumina¸˜o, m´todos ca a ca ca ede antialiasing e opera¸˜es sobre pixels, mas n˜o provˆ mecanismos para descrever ou modelar objetos co a egeom´tricos complexos. e1.2 Aplica¸˜es da CG coA lista de aplica¸˜es ´ enorme, e cresce rapidamente. Uma amostra significativa inclui: co e • Interfaces: a maioria dos aplicativos para computadores pessoais e esta¸˜es de trabalho atualmente co disp˜em de interfaces gr´ficas baseadas em janelas, menus dinˆmicos, ´ o a a ıcones, etc. • Tra¸ado interativo de gr´ficos: aplicativos voltados para usu´rios em ciˆncia, tecnologia e c a a e neg´cios geram gr´ficos que ajudam na tomada de decis˜es, esclarecem fenˆmenos complexos e o a o o representam conjuntos de dados de forma clara e concisa. • Automa¸˜o de escrit´rios e editora¸˜o eletrˆnica: o uso de gr´ficos na dissemina¸˜o de ca o ca o a ca informa¸˜es cresceu muito depois do surgimento de software para editora¸˜o eletrˆnica em com- co ca o putadores pessoais. Este tipo de software permite a cria¸˜o de documentos que combinam texto, ca tabelas e gr´ficos - os quais tanto podem ser “desenhados” pelo usu´rio ou obtidos a partir de a a imagens digitalizadas. • Projeto e desenho auxiliado por computador: em CAD, sistemas gr´ficos interativos s˜o a a utilizados para projetar componentes, pe¸as e sistemas de dispositivos mecˆnicos, el´tricos, eletro- c a e mecˆnicos e eletrˆnicos. Isto inclui edif´ a o ıcios, carca¸as de autom´veis, avi˜es e navios, chips VLSI, c o o sistemas ´ticos, redes telefˆnicas e de computador. Eventualmente, o usu´rio deseja apenas produzir o o a desenhos precisos de componentes e pe¸as. Mais frequentemente, o objetivo ´ interagir com um c e modelo computacional do componente ou sistema sendo projetado, de forma a testar propriedades estruturais, el´tricas ou t´rmicas, at´ atingir um projeto satisfat´rio. e e e o • Simula¸˜o e anima¸˜o para visualiza¸˜o cient´ ca ca ca ıfica, lazer, arte e publicidade: uma das a ´reas que mais evoluiram na d´cada de 80 foi a visualiza¸˜o cient´ e ca ıfica. Cientistas e engenheiros perceberam que n˜o poderiam interpretar as quantidades prodigiosas de dados produzidas por pro- a gramas em supercomputadores sem resumir os dados e identificar tendˆncias e fenˆmenos atrav´s e o e 10
  12. 12. de representa¸˜es gr´ficas. Como resultado, surgiram anima¸˜es computadorizadas do comporta- co a co mento variante no tempo de objetos reais ou simulados. Tais anima¸˜es podem ser utilizadas para co estudar entidades matem´ticas abstratas e modelos matem´ticos de fenˆmenos como fluxo de flui- a a o dos, relatividade, rea¸˜es qu´ co ımicas e nucleares, deforma¸˜o de estruturas mecˆnicas sob diferente ca a tipos de press˜o, etc. Outras aplica¸˜es tecnol´gicas avan¸adas incluem a produ¸˜o de desenhos a co o c ca animados e efeitos especiais para filmes e comerciais de TV, que requerem mecanismos sofisticados para modelar objetos e para representar luz e sombra. • Controle de processos: sistemas de controle de tr´fego a´reo e espacial, sistemas de controle de a e refinarias e de usinas de energia mostram graficamente os dados coletados por sensores conectados a componentes cr´ ıticos dos sistemas, de forma que os operadores possam responder adequadamente a condi¸˜es cr´ co ıticas. • Cartografia: a computa¸˜o gr´fica ´ usada para produzir representa¸˜es precisas e esquem´ticas ca a e co a de fenˆmenos naturais e geogr´ficos obtidos a partir da coleta de dados. o a • Arte: A arte por computador vem crescendo imensamente nos ultimos anos. E poss´ ´ ´ ıvel utilizar novos recursos de computa¸˜o gr´fica para produzir efeitos art´ ca a ısticos, como a extra¸˜o de texturas, ca padr˜es e estruturas a partir de fotos digitalizadas. o ca ´ • Gr´ficos de Apresenta¸˜o (Presentation Graphics): E a utiliza¸˜o de t´cnicas gr´ficas para a ca e a demonstra¸˜o de resultados, id´ias e gr´ficos, com o intuito de mostrar ou transmitir conhecimento ca e a espec´ ıfico como, por exemplo, em uma aula, ou reuni˜o, ou na contru¸˜o de material did´tico. a ca a Neste curso, estamos interessados principalmente em t´cnicas de s´ e ıntese de imagens bem como seurelacionamento com o processamento de imagens. Tamb´m n˜o pretendemos explorar todo o escopo de e aaplica¸˜es da CG, mas estudar os conceitos gerais envolvidos na programa¸˜o das primitivas gr´ficas que co ca aest˜o por tr´s dessas aplica¸˜es. a a co1.3 Hardware Gr´fico aUm sistema de hardware para computa¸˜o gr´fica consiste essencialmente de dispositivos gr´ficos de ca a aentrada e sa´ (I/O) ligados a um computador (Figura 1.2). Ao conjunto de dispositivos de I/O gr´ficos ıda aalocados para utiliza¸˜o por uma unica pessoa por vez denomina-se genericamente de “esta¸˜o de trabalho ca ´ cagr´fica”, ou graphics workstation. Um sistema gr´fico multi-usu´rio pode ter v´rias esta¸˜es gr´ficas, de a a a a co aforma que mais de um dos v´rios dispositivos de I/O dispon´ a ıveis podem estar conectados e utilizandoo computador hospedeiro. Como em CG ´ freq¨ente a manipula¸˜o de grandes quantidades de dados, e u cao computador deve ser equipado de mem´ria secund´ria com alta capacidade de armazenagem. Al´m o a edisso, um canal de comunica¸˜o de alta velocidade ´ necess´rio para reduzir os tempos de espera. Isto ca e anormalmente ´ feito atrav´s de comunica¸˜o local sobre um barramento paralelo com velocidade de e e catransmiss˜o de dados da ordem de um milh˜o de bits por segundo. Se o equipamento gr´fico est´ distante a a a ado processador (conex˜o remota), um canal de comunica¸˜o serial pode ser necess´rio. Transmiss˜o a ca a aserial ass´ıncrona pode ser feita a velocidades de at´ 19.2 kbps (milhares de bits por segundo). Mesmo tal evelocidade pode ser muito lenta para alguns objetivos como anima¸˜o gr´fica de alta resolu¸˜o, onde cada ca a caframe de imagem pode ter um megabyte de dados. Um sistema de conex˜o ideal nesse caso ´ uma Local a eArea Network (LAN) como a Ethernet. Os dispositivos de sa´ gr´ficos podem ser de natureza digital ıda aou anal´gica, resultando em duas classes de gr´ficos, denominados vector graphics (gr´ficos vetoriais), o a aque desenham figuras tra¸ando seq¨ˆncias de segmentos de reta (vetores); e raster graphics (gr´ficos de c ue avarredura, ou matriciais), que desenham figuras pelo preenchimento de uma matriz de pontos (pixels).1.4 Resolu¸˜o Gr´fica ca aVirtualmente todos os dispositivos de I/O gr´ficos usam uma malha retangular de posi¸˜es endere¸´veis a co ca- a qual ´ denominada “retˆngulo de visualiza¸˜o”. A “resolu¸˜o gr´fica” de um dispositivo ´ o n´mero e a ca ca a e ude posi¸˜es (ou pontos, ou pixels) horizontais e verticais que ele pode distinguir. Existem 4 parˆmetros co aque definem a resolu¸˜o: ca 1. ndh - o n´mero de posi¸˜es endere¸´veis horizontalmente. u co ca 2. ndv - o n´mero de posi¸˜es endere¸´veis verticalmente. u co ca 3. width - a largura do retˆngulo de visualiza¸˜o em mm. a ca 11
  13. 13. Figura 1.2: Esquema b´sico de um hardware de computa¸˜o gr´fica. a ca a 4. height - a altura do retˆngulo de visualiza¸˜o em mm. a ca A partir desses 4 parˆmetros, v´rios n´meros interessantes podem ser calculados: a a u ndh 1. resolu¸˜o horizontal: horiz res = ca width width 2. tamanho ponto horizontal: horiz dot size = ndh ndv 3. resolu¸˜o vertical: vert res = ca height height 4. tamanho ponto vertical: vert dot size = ndv 5. total pontos endere¸´veis: total nr dots = ndh.ndv ca total nr dots 6. resolu¸˜o de ´rea: area res = ca a (width.height) vert dot size 7. raz˜o de aspecto gr´fica: aspect ratio = a a horiz dot size height 8. raz˜o de aspecto f´ a ısica: physical aspect ratio = width Note que horiz res, vert res e area res definem resolu¸˜es f´ co ısicas, enquanto que ndh, ndv e total nr dotsdefinem resolu¸˜es gr´ficas. Dispositivos de visualiza¸˜o podem ter a mesma resolu¸˜o gr´fica, com re- co a ca ca asolu¸˜es f´ co ısicas muito diferentes. O ideal seria ter um aspect ratio igual ou pr´ximo de 1. o1.5 Sistemas de CoordenadasNa CG ´ necess´rio definir sistemas de coordenadas para quantificar os dados que est˜o e a asendo manipulados. J´ vimos que os dispositivos de visualiza¸˜o gr´fica matriciais consistem de uma a ca amatriz de pixels endere¸´veis, e um gr´fico ´ formado “acendendo” ou “apagando” um pixel. Os pixels ca a es˜o endere¸ados por dois n´meros inteiros que d˜o suas coordenadas horizontal e vertical, dcx, e dcy, a c u arespectivamente, onde: 0 ≤ dcx ≤ ndhm1 ≡ ndh − 1 (1.1) 0 ≤ dcy ≤ ndvm1 ≡ ndv − 1 (1.2) Na matriz de pixels, o valor dcx + 1 d´ o n´mero da coluna, e dcy + 1 d´ o n´mero da linha do pixel a u a uendere¸ado. O pixel endere¸ado como (0, 0) est´ geralmente no canto inferior esquerdo do retˆngulo de c c a avisualiza¸˜o. As coordenadas (dcx, dcy) s˜o chamadas de coordenadas do dispositivo, e podem assumir ca aapenas valores inteiros. Coordenadas do dispositivo podem variar bastante para diferentes equipamentos,o que levou ` utiliza¸˜o de coordenadas normalizadas do dispositivo (NDC - normalized device coor- a cadinates), para efeito de padroniza¸˜o (ndcx, ndcy). NDCs s˜o vari´veis reais, geralmente definidas no ca a aintervalo de 0 a 1: 0 ≤ ndcx ≤ 1 (1.3) 12
  14. 14. 0 ≤ ndcy ≤ 1 (1.4) A coordenada NDC (0, 0) corresponde ` origem (0, 0) nas coordenadas do dispositivo, e a coordenada aNDC (1, 1) refere-se ao pixel no canto superior direito, que corresponde ao pixel (ndhm1, ndvm1) nascoordenadas do dispositivo. A vantagem da utiliza¸˜o de NDCs ´ que padr˜es gr´ficos podem ser discuti- ca e o ados usando um sistema de coordenadas independente de dispositivos gr´ficos espec´ a ıficos. Obviamente, osdados gr´ficos precisam ser transformados do sistema de coordenadas independente para o sistema de co- aordenadas do dispositivo no momento de visualiza¸˜o. O mapeamento de NDCs (reais) para coordenadas cado dispositivo (inteiros) ´ “linear”, por exemplo: e dcx = round(ndcx.ndhm1) (1.5) dcy = round(ndcy.ndvm1) (1.6) Dois outros sistemas de coordenadas s˜o uteis. O primeiro ´ o sistema de cordenadas f´ a ´ e ısico, (pcx, pcy)onde pcx ´ a distˆncia f´ e a ısica ao longo do eixo x a partir do extremo esquerdo do retˆngulo de visualiza¸˜o, a cae pcy ´ a distˆncia f´ e a ısica ao longo do eixo y a partir do extremo inferior. As unidades de medida utilizadass˜o polegadas ou mil´ a ımetros. A transforma¸˜o de coordenadas f´ ca ısicas para coordenadas do dispositivo ´edada por: pcx dcx = trunc(ndhm1 ) (1.7) width pcy dcy = trunc(ndvm1 ) (1.8) height O segundo ´ o sistema de coordenadas do mundo, ou sistema de coordenadas do usu´rio, que consiste e ade coordenadas cartesianas (x, y), num intervalo qualquer definido pelo usu´rio: a xmin ≤ x ≤ xmax (1.9) ymin ≤ y ≤ ymax (1.10) Os parˆmetros que definem o intervalo de valores de x e y, xmin, ymin, xmax e ymax, definem uma aa´rea retangular no espa¸o bidimensional, denominada de janela. A transforma¸˜o de coordenadas do c causu´rio (x, y) para NDCs (ndcx, ndcy), denominada transforma¸˜o de visualiza¸˜o, ´ dada por: a ca ca e x − xmin ndcx = (1.11) xmax − xmin y − ymin ndcy = (1.12) ymax − ymin Para visualizar dados num dispositivo gr´fico qualquer, ´ necess´rio transform´-los das coordenadas a e a ado usu´rio para NDCs, e de NDCs para coordenadas do dispositivo. Da mesma forma, dados de entrada agr´ficos precisam ser transformados de coordenadas do dispositivo para NDCs, e depois para coordenadas ado usu´rio (Figura 1.3). a Figura 1.3: Sistemas de coordenadas e suas transforma¸˜es. co 13
  15. 15. 1.6 Exerc´ ıciosEscreva os procedimentos inp to ndc, ndc to user, user to ndc e ndc to dc, que transformam dados entreos v´rios sistemas de coordenadas, conforme ilustrado na Figura 1.3. Repita o exerc´ assumindo que a ıcioo intervalo de varia¸˜o do sistema NDC vai de: ca (i) -1 a +1 (coordenadas normalizadas centradas) (ii) 0 a 100 14
  16. 16. Cap´ ıtulo 2Dispositivos de Visualiza¸˜o caToda imagem criada atrav´s de recursos computacionais deve ser representada em algum dispositivo f´ e ısicoque permita a sua visualiza¸˜o. Diversas tecnologias e diferentes tipos de dispositivos s˜o utilizados para ca agerar representa¸˜es visuais, sendo que o desenvolvimento dessas tecnologias teve um papel fundamental cona evolu¸˜o da CG. ca Tanto para o usu´rio como para o implementador de sistemas gr´ficos ´ importante conhecer as a a ecaracter´ ısticas de cada uma dessas tecnologias para sua melhor utiliza¸˜o. Vamos discutir alguns aspectos cada arquitetura e organiza¸˜o dos tipos mais comuns dos dispositivos de exibi¸˜o gr´fica, sem entrar em ca ca adetalhes t´cnicos. e ´ E poss´ ıvel classificar os dispositivos de exibi¸˜o (tra¸adores, impressoras e terminais de v´ ca c ıdeo) emduas principais categorias, segundo a forma pela qual as imagens s˜o geradas: dispositivos vetoriais e adispositivos matriciais. Os dispositivos gr´ficos vetoriais conseguem tra¸ar segmentos de reta perfeitos a centre dois pontos da malha finita de pontos definida por suas superf´ ıcies de exibi¸˜o. Os dispositivos camatriciais, por outro lado, apenas conseguem tra¸ar pontos, tamb´m em uma malha finita. Assim, c esegmentos de reta s˜o tra¸ados como sequˆncias de pontos pr´ximos. a c e o2.1 Dispositivos Gr´ficos Vetoriais a2.1.1 Tra¸adores Digitais cTra¸adores (plotters) s˜o dispositivos eletromecˆnicos que produzem o desenho pelo movimento de c a auma caneta sobre a superf´ do papel. A primitiva gr´fica b´sica nesse tipo de dispositivo ´ o segmento ıcie a a ede reta. Arcos, curvas e caracteres s˜o produzidos pelo tra¸ado de uma s´rie de pequenos segmentos. a c e Nos tra¸adores de mesa, o papel ´ fixado sobre uma superf´ plana retangular, sobre a qual est´ lo- c e ıcie acalizado um bra¸o mecˆnico que movimenta-se por transla¸˜o. Ao longo do bra¸o desloca-se um cabe¸ote c a ca c cque suporta uma caneta perpendicularmente ` mesa, a qual pode ser pressionada contra o papel ou alevantada de forma a n˜o toc´-lo. a a Nos tra¸adores de rolo, o bra¸o ´ fixo, e o papel ´ movimentado para frente e para tr´s por a¸˜o de c c e e a caum rolo, como em uma m´quina de escrever. a Embora distintos em constru¸˜o, estes dois tipos de tra¸adores possuem caracter´ ca c ısticas de pro-grama¸˜o e controle similares. A posic˜o da caneta sobre o papel ´ definida pelo posicionamento do ca a ebra¸o em rela¸˜o ao papel (abcissa x), e do cabe¸ote sobre o bra¸o (ordenada y). Figuras s˜o tra¸adas c ca c c a cpela varia¸˜o controlada da posi¸˜o da caneta (abcissa e ordenada) e pelo controle do estado da caneta ca ca(abaixada ou levantada). O tra¸ador ´ em geral controlado por um processador dedicado que recebe c einstru¸˜es diretamente do computador ou de um arquivo que descreve o desenho. co2.1.2 Dispositivos de V´ ıdeo Vetoriais (Vector Refresh Display Tubes)No in´ da CG, o principal dispositivo de v´ ıcio ıdeo n˜o era um monitor parecido com uma TV, e sim um acar´ ıssimo CRT (Cathode Ray Tube) do tipo usado em oscilosc´pios. Como o display dos oscilosc´pios, o oos monitores tinham como entradas duas voltagens, x e y, que direcionavam um feixe de el´trons para eum ponto espec´ ıfico da tela. O feixe tra¸ava uma linha do ultimo ponto para o corrente, num unico c ´ ´movimento vetorial. Um CRT consiste basicamente de uma superf´ de exibi¸˜o, quase plana, recoberta internamente ıcie cade material ` base de f´sforo, um canh˜o emissor de el´trons e um sistema de deflex˜o (Figura 2.1). O a o a e acanh˜o emite um fino feixe de el´trons que, acelerados, chocam-se contra a superf´ fosforecente da tela. a e ıcieSob a a¸˜o dos el´trons, o material fosforecente incandesce, emitindo luz no ponto da tela atingido pelo ca e 15
  17. 17. Figura 2.1: Estrutura interna de um CRT.feixe. A fun¸˜o do sistema de deflex˜o ´ dirigir controladamente o feixe de el´trons para um determinado ca a e eponto da tela. O brilho do f´sforo dura apenas alguns milisegundos (a emiss˜o de luz pelo f´sforo n˜o ´ est´vel, e o a o a e acai a zero logo ap´s a interrup¸˜o do bombardeio de el´trons), de forma que toda a figura precisa ser o ca econtinuamente retra¸ada para que o gr´fico permane¸a na tela. Este processo ´ denominado refreshing c a c e(da´ o nome, vector refreshing tubes). Se a imagem sendo mostrada ´ composta por muitos vetores, vai ı ehaver um atraso significativo entre o tra¸ado do primeiro e do ultimo vetores, e alguns do vetores tra¸ados c ´ cinicialmente podem desaparecer nesse per´ ıodo. O resultado ´ que o tubo n˜o consegue retra¸ar a imagem e a cde modo suficientemente r´pido para evitar que um efeito de flickering (“cintila¸˜o”) torne-se aparente a cana tela. Figura 2.2: Convers˜o Digital-Anal´gica para Visualiza¸˜o num CRT. a o ca O tubo n˜o exige muita mem´ria para manter uma imagem complexa constru´ por segmentos de a o ıdareta, uma vez que apenas as coordenadas dos extremos dos segmentos, e as dos cantos da tela precisamser armazenadas. Esta era uma caracter´ ıstica importante no in´ da CG, j´ que a mem´ria era muito ıcio a ocara. O computador gera as coordenadas dos pontos que definem a figura a ser mostrada na tela, e umDAC (conversor digital-anal´gico) ´ necess´rio para converter os pontos digitais em voltagens a serem o e aenviadas para o CRT (Figura 2.2). As desvantagens dos terminais gr´ficos vetoriais eram: a tecnologia cara, o efeito de flickering, e aa mem´ria limitada, que inviabilizava a descri¸˜o de imagens com detalhes complexos. As vantagens: o cadispositivo gr´fico de alta resolu¸˜o (pelo menos 1000x1000), rapidez na gera¸˜o de imagens simples, o a ca caque os torna adequados para testes iniciais em anima¸˜o. ca 16

×