SlideShare una empresa de Scribd logo
1 de 115
Descargar para leer sin conexión
Apostila de Computa¸˜o Gr´fica
                   ca    a

     Agma Juci Machado Traina
   Maria Cristina Ferreira de Oliveira

          16 de maio de 2006
Resumo

Este ´ o material utilizado no Instituto de Ciˆncias matem´ticas e de Computa¸˜o da USP-S˜o Carlos
     e                                        e           a                  ca          a
para as disciplinas de computa¸˜o gr´fica ministradas pelas Profa. Dra. Agma Juci Machado Traina e
                               ca     a
Profa. Dra. Maria Cristina Ferreira de Oliveira.
Sum´rio
   a

Sum´rio
   a                                                                                                                                                                        2

Lista de Figuras                                                                                                                                                            5

1 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 . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14

2 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 . . . . . . . . . . . . . . . . . . . . . . . . .                                               .   .   .   .   .   .   .   .   .   .   .   22

3 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 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 . . . . . . . . . . . . . .                         . . . . . . . . . .                     . . . . . . .               46

5 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                                                               .   .   .   .   .   .   .   .   .   .   .   .   .   .   64

6 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                                                                                                        77

7 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                                . . . . .           . . . . . . . .                 . . . . .           .   .   .   .   .   .   .   .   81

8 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                                                                                                        .   .   .   .   .   .   .   .   .   .   90

9 Apostila Modelagem                                                                                                                                               93

10 Rendering                                                                                                                                                       94

11 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
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                                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   107

Bibliografia                                                                                                                                                          113

A Hist´rico
      o                                                                                                                                                              114




                                                         4
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
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                                                                                             52
5.4    Derivando a equa¸˜o de rota¸˜o. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
                           ca        ca                                                                                       52
5.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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                       53
5.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                                                                                    54
5.7    Reflex˜o de um objeto em torno do eixo x. . . . . . . . . . . . . . . . . . . . . . . . . . .
              a                                                                                                               55
5.8    Reflex˜o de um objeto em torno de um eixo perpendicular ao plano xy, passando pela origem.
              a                                                                                                               56
5.9    Rota¸˜o em rela¸˜o ao Ponto P 1, por um ˆngulo θ. . . . . . . . . . . . . . . . . . . . . . .
            ca           ca                         a                                                                         58
5.10   Escala e rota¸˜o de uma casa em rela¸˜o ao ponto P1 . . . . . . . . . . . . . . . . . . . . .
                     ca                         ca                                                                            59
5.11   Janela em Coordenadas do mundo e porta de vis˜o em coordenadas de tela. . . . . . . . .
                                                            a                                                                 60
5.12   Duas portas de vis˜o associadas a mesma janela. . . . . . . . . . . . . . . . . . . . . . . .
                             a                                                                                                60
5.13   Os passos da transforma¸˜o janela - porta de vis˜o. . . . . . . . . . . . . . . . . . . . . . .
                                ca                         a                                                                  61
5.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                                                                                                            61
5.15   Sistema de Coordenadas dado pela Regra da M˜o Direita. . . . . . . . . . . . . . . . . . .
                                                          a                                                                   63
5.16   Transformando P1 , P2 e P3 da posi¸˜o inicial em (a) para a posi¸˜o final em (b). . . . . .
                                             ca                              ca                                               65
5.17   Rota¸˜o dos pontos P1 , P2 e P3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
            ca                                                                                                                66
5.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                                                                                                         66
5.19   Rota¸˜o em rela¸˜o ao eixo z. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
            ca           ca                                                                                                   67
5.20   Os vetores unit´rios Rx , Ry e Rz , os quais s˜o transformados nos eixos principais. . . . .
                        a                             a                                                                       68

6.1    Atributos da cˆmera [Schr¨eder, 1998]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
                        a            o                                                                                        69
6.2    Movimentos de cˆmera [Schr¨eder, 1998]. . . . . . . . . . . . . . . . . . . . . . . . . . . .
                          a             o                                                                                     70
6.3    Movimentos de cˆmera [Schr¨eder, 1998]. . . . . . . . . . . . . . . . . . . . . . . . . . . .
                          a             o                                                                                     71
6.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]. . . . . . . . . . . . . . . . . . . . . . . . . . . .                          71
6.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                                                                             72
6.6    Taxomia de proje¸˜es [Plastock and Kalley, 1999]. . . . . . . . . . . . . . . . . . . . . . .
                           co                                                                                                 73
6.7    Linha AB e sua proje¸˜o A’B’: (a) perspectiva; (b) ortogonal. . . . . . . . . . . . . . . . .
                                ca                                                                                            73
6.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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                     74
6.9    Proje¸˜es perspectivas com 2 pontos de fuga ( o plano de proje¸˜o intercepta 2 eixos (x e
             co                                                                ca
       z)). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                 74
6.10   Proje¸˜es perspectivas com 3 pontos de fuga ( o plano de proje¸˜o intercepta os 3 eixos).
             co                                                                ca                                             75
6.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                                                                               75
6.12   Confus˜o visual da perpectiva (objeto atr´s do centro de proje¸˜o). . . . . . . . . . . . . .
               a                                      a                       ca                                              76
6.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                                                                                                           76
6.14   Proje¸˜o ortogonal de um ponto no plano de proje¸˜o [Hearn and Baker, 1994]. . . . . . .
             ca                                                 ca                                                            77

7.1    Exemplos de recorte de segmentos de reta. . . . . . . . . . . . . . . . . . . . . . . . . . . .                        78
7.2    C´digos das regi˜es. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
         o             o                                                                                                      80
7.3    Funcionamento do algoritmo de Cohen-Sutherland para recorte de segmentos. . . . . . . .                                80
7.4    Algoritmo de Sutherland-Hodgman para Recorte de Pol´       ıgonos. . . . . . . . . . . . . . . .                       83
7.5    Exemptos de recorte de pol´ıgonos. (a) M´ltiplos componentes. (b) Caso convexo (c) Caso
                                                 u
       cˆncavo com muitas arestas exteriores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
        o                                                                                                                     83
7.6    Quatro situa¸˜es poss´
                   co       ıveis no recorte de pol´ ıgonos. . . . . . . . . . . . . . . . . . . . . . .                      84

8.1    Representa¸˜o de superf´
                 ca           ıcies atrav´s de malhas. . . . . . . .
                                         e                                  . . . . . . . . . .   .   .   .   .   .   .   .   86
8.2    Aproxima¸˜o de curvas por segmentos de reta conectados. .
                ca                                                          . . . . . . . . . .   .   .   .   .   .   .   .   87
8.3    Aproxima¸˜o de curvas por segmentos de reta conectados. .
                ca                                                          . . . . . . . . . .   .   .   .   .   .   .   .   88
8.4    Pontos de uma circunferˆncia. . . . . . . . . . . . . . . . . .
                              e                                             . . . . . . . . . .   .   .   .   .   .   .   .   90
8.5    Representa¸˜o de uma curva de B´zier definida pelos pontos
                 ca                      e                                  B0 , B1 , B2 e B3 .   .   .   .   .   .   .   .   90
8.6    Fun¸˜es de blending para v´rios valores de n. . . . . . . . .
          co                      a                                         . . . . . . . . . .   .   .   .   .   .   .   .   91

11.1 Espectro eletromagn´tico [Gro94]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
                        e                                                                                                     95


                                                       6
11.2   Ilustra¸˜o da mistura de cores aditivas [For94]. . . . . . . . . . . . . .
              ca                                                                      . . . . .   .   .   .   .   .   . 97
11.3   Ilustra¸˜o da mistura de cores subtrativas [For94]. . . . . . . . . . . .
              ca                                                                      . . . . .   .   .   .   .   .   . 97
11.4   Ilustra¸˜o da obten¸˜o de tints, shades e tones. . . . . . . . . . . . . .
              ca          ca                                                          . . . . .   .   .   .   .   .   . 97
11.5   Diagrama de cromaticidade do CIE [Hea94]. . . . . . . . . . . . . . . .        . . . . .   .   .   .   .   .   . 98
11.6   Representa¸˜o de escalas de cor no diagrama de cromaticidade do CIE
                  ca                                                                 [Hea94].     .   .   .   .   .   . 99
11.7   Cubo do RGB [Fol96]. . . . . . . . . . . . . . . . . . . . . . . . . . . .     . . . . .   .   .   .   .   .   . 100
11.8   Cone hexagonal do HSV [Fol96]. . . . . . . . . . . . . . . . . . . . . .       . . . . .   .   .   .   .   .   . 100
11.9   Cone duplo do HLS [Fol96]. . . . . . . . . . . . . . . . . . . . . . . . .     . . . . .   .   .   .   .   .   . 101

12.1 Efeitos sobre uma imagem, de se reduzir o tamanho da grade de amostragem. . . . . . . .                           103
12.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. . . . . .             104
12.3 Representa¸˜o de um pixel P com 8-bits (8 planos) de profundidade. . . . . . . . . . . . .
                 ca                                                                                                    104
12.4 Organiza¸˜o de uma LUT, para um sistema de pixels de 8 bits. . . . . . . . . . . . . . . .
               ca                                                                                                      105
12.5 Imagens e histogramas de intensidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                   106
12.6 Efeito de uma transforma¸˜o dos n´
                                 ca         ıveis de cinza efetuado sobre o histograma. . . . . . . .                  107
12.7 Manipula¸˜o de janelas de intensidade da imagem atrav´s do histograma. . . . . . . . . .
               ca                                                   e                                                  107
12.8 Sinais “ru´ıdo” (a) e “degrau” (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               109
12.9 Sinais “ru´ıdo” (a) e “degrau” (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               109
12.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. . . . . . . . . . . . . . . . . . . . .                110
12.11Efeito do filtro da mediana sobre o “ru´    ıdo” e o “degrau”. . . . . . . . . . . . . . . . . . .                 110
12.12Uma transforma¸˜o geom´trica de 90o graus. . . . . . . . . . . . . . . . . . . . . . . . . . .
                       ca        e                                                                                     111




                                                     7
Cap´
   ıtulo 1

Introdu¸˜o ` Computa¸˜o Gr´fica
       ca a         ca    a

A 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             ca
preta¸˜o de modelos e imagens de objetos utilizando computador. Tais modelos vˆm de uma variedade
     ca                                                                       e
de 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                    e
Visualiza¸˜o Computacional [Minghim and Oliveira, 1997, Schr¨eder et al., 1996], que usa t´cnicas de
          ca                                                 o                            e
Computa¸˜o Gr´fica para representar informa¸˜o, de forma a facilitar o entendimento de conjuntos de
          ca   a                            ca
dados num´ricos de alta complexidade. Exemplos de ´reas de aplica¸˜o s˜o: visualiza¸˜o de imagens
            e                                        a            ca a               ca
m´dicas, meteorologia, dados financeiros, visualiza¸˜o de programas, dinˆmica dos fluidos, e muitas
  e                                               ca                    a


                                                  8
outras. Nelas, o que existe em comum ´ que a representa¸˜o gr´fica (superf´
                                               e                   ca     a             ıcies, part´ıculas, ´
                                                                                                            ıcones) s˜oa
geradas automaticamente a partir do conjunto de dados. Ao usu´rio cabe definir parˆmetros e atributos
                                                                           a                      a
da imagem para melhor “navegar” seu conjunto de dados. Dessa maneira, a visualiza¸˜o de dados partilha
                                                                                                ca
de 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                      u
e a aparˆncia dos objetos e suas imagens visualizadas na tela, usando dispositivos como o teclado e o
          e
mouse. Entretanto, at´ o in´
                           e      ıcio dos anos 80, a computa¸˜o gr´fica era uma disciplina restrita e alta-
                                                                   ca     a
mente especializada. Devido principalmente ao alto custo do hardware, poucos programas aplicativos
exploravam gr´ficos. O advento dos computadores pessoais de baixo custo, como o IBM-PC e o Apple
                 a
Macintosh, com terminais gr´ficos de varredura (raster graphics displays), popularizou o uso de gr´ficos
                                  a                                                                                a
na intera¸˜o usu´rio-computador.
          ca        a
     Os displays gr´ficos de baixo custo possibilitaram o desenvolvimento de in´meros aplicativos baratos
                     a                                                                    u
e f´ceis de usar, que dispunham de interfaces gr´ficas - planilhas, processadores de texto, programas de
    a                                                    a
desenho... As interfaces evoluiram e introduziu-se o conceito de desktop - uma met´fora para uma mesa
                                                                                                a
de trabalho. Nessas interfaces gr´ficas, atrav´s de um gerenciador de janelas (window manager ) o usu´rio
                                      a             e                                                                a
pode 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               a
deles a um simples toque no mouse. ´       Icones (icons) s˜o usados para representar arquivos de dados, progra-
                                                            a
mas e abstra¸˜es de objetos de um escrit´rio - como arquivos, caixas de correio (mailboxes), impressoras,
               co                               o
latas de lixo - nas quais s˜o executadas opera¸˜es an´logas `s da vida real. Para ativar os programas, o
                              a                       co       a      a
usu´rio pode selecionar ´
     a                      ıcones, ou usar buttons e menus dinˆmicos. Objetos s˜o manipulados diretamente
                                                                    a                   a
atrav´s de opera¸˜es de pointing e clicking feitas com o mouse. Atualmente, mesmo aplicativos que ma-
        e           co
nipulam texto (como processadores de texto) ou dados num´ricos (como planilhas) usam interfaces desse
                                                                     e
tipo, 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                     ca
ciˆ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
                                                                                            a
computacionais. Processamento de imagens ´ uma ´rea relacionada que trata do processo inverso: a
                                                      e        a
an´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...).
                                                                                                                a
As imagens em quest˜o constituem uma representa¸˜o visual de objetos bi- ou tridimensionais descritos
                         a                                  ca
atrav´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                                                 a
feridas para o computador por mecanismos diversos - digitaliza¸˜o de fotos, tomadas de uma cˆmera de
                                                                         ca                                   a
v´ıdeo, ou imagens de sat´lite - para serem manipuladas visando diferentes objetivos.
                             e


1.1      Sistemas Gr´ficos
                    a
A Computa¸˜o Gr´fica (especialmente as componentes relativas a gr´ficos 3D e a gr´ficos 3D interativos)
             ca   a                                                  a               a
desenvolveu-se de modo bem diverso: de simples programas gr´ficos para computadores pessoais ` pro-
                                                                 a                                 a
gramas de modelagem e de visualiza¸˜o em workstations e supercomputadores. Como o interesse em CG
                                    ca
cresceu, ´ importante escrever aplica¸˜es que possam rodar em diferentes plataformas. Um padr˜o para
         e                           co                                                          a
desenvolvimento de programas gr´ficos facilita esta tarefa eliminando a necessidade de escrever c´digo
                                  a                                                                 o
para um driver gr´fico distinto para cada plataforma na qual a aplica¸˜o deve rodar. Para se padronizar
                  a                                                    ca
a constru¸˜o de aplicativos que se utilizam de recursos gr´ficos e torn´-los o mais independentes poss´
          ca                                              a            a                              ıvel
de 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 Postscript
que se tornou um padr˜o por facilitar a publica¸˜o de documentos est´ticos contendo gr´ficos 2D e textos.
                       a                       ca                    a                   a
Outro exemplo ´ o sistema XWindow, que se tornou padr˜o para o desenvolvimento de interfaces gr´ficas
                e                                         a                                        a
2D em workstations UNIX. Um programador usa o X para obter uma janela em um display gr´fico no    a
qual um texto ou um gr´fico 2D pode ser desenhado. A ado¸˜o do X pela maioria dos fabricantes de
                         a                                      ca
workstation 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                            e
um programa pode rodar em uma workstation e ler a entrada e ser exibido em outra workstation, mesmo
de outro fabricante.
    Para gr´ficos 3D foram propostos v´rios padr˜es. A primeira tentativa foi o Sistema Core - Core
            a                             a        o
Graphics System - (1977 e 1979) pelos americanos. Mas a primeira especifica¸˜o gr´fica realmente pa-
                                                                               ca      a


                                                           9
dronizada foi o GKS - Graphical Kernel System, pela ANSI e ISO em 1985. O GKS ´ uma vers˜o maise       a
elaborada que o Core. O GKS suporta um conjunto de primitivas gr´ficas interrelacionadas, tais como:
                                                                                a
desenho de linhas, pol´    ıgonos, caracteres, etc., bem como seus atributos. Mas n˜o suporta agrupamentos
                                                                                         a
de primitivas hier´rquicas de estruturas 3D. Um sistema relativamente famoso ´ PHIGS (Programmer’s
                     a                                                                    e
Hierarchical Interactive Graphics System). Baseado no GKS, PHIGS ´ um padr˜o ANSI. PHIGS (e seu
                                                                                 e         a
descendente, PHIGS+) provˆem meios para manipular e desenhar objetos 3D encapsulando descri¸˜es de
                                 e                                                                      co
objetos e atributos em uma display list. A display list ´ utilizada quando o objeto ´ exibido ou manipu-
                                                              e                              e
lado, 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                    e
rede de computadores. Uma desvantagem da display list ´ a necessidade de um esfor¸o consider´vel
                                                                    e                            c           a
para reespecificar um objeto que est´ sendo modelado interativamente pelo usu´rio. Uma desvantagem
                                           a                                               a
do PHIGS e PHIGS+ (e GKS) ´ que eles n˜o tˆm suporte a recursos avan¸ados como mapeamento de
                                      e           a e                                 c
textura.
     O XWindow ganhou uma extens˜o para o PHIGS, conhecida como PEX, de modo que o X pudesse
                                           a
manipular e desenhar objetos 3D. Entre outras extens˜es, PEX soma-se de modo imediato ao PHIGS,
                                                              o
assim um objeto pode ser exibido durante a sua defini¸˜o sem a necessidade da display list. O PEX
                                                                ca
tamb´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                                               e
ter´ısticas avan¸adas e pode ser utilizado em modo imediato ou com display list. OpenGL ´ um padr˜o
                 c                                                                                  e          a
relativamente novo (sua primeira vers˜o ´ de 1992) e ´ baseado na biblioteca GL das workstations IRIS da
                                            a e            e
Silicon Graphics. Atualmente um cons´rcio de ind´strias ´ respons´vel pela gerenciamento da evolu¸˜o do
                                             o           u      e           a                            ca
OpenGL. Existe uma implementa¸˜o livre (c´digo fonte dispon´
                                        ca         o                     ıvel) do OpenGL conhecida com MesaGL
ou Mesa3D.
     Como os outros sistemas gr´ficos, OpenGL oferece uma interface entre o software e o hardware gr´fico.
                                    a                                                                      a
A interface consiste em um conjunto de procedimentos e fun¸˜es que permitem a um programador es-
                                                                       co
pecificar os objetos e as opera¸˜es que os envolvem produzindo imagens de alta qualidade. Como o
                                     co
PEX, o OpenGL integra/permite a manipula¸˜o de objetos (desenhos) 3D ao X, mas tamb´m pode ser
                                                    ca                                               e
integrado em outros sistemas de janela (por exemplo, Windows/NT) ou pode ser usado sem um sistema
de janela. OpenGL provˆ controle direto sobre opera¸˜es gr´ficas fundamentais em 3D e 2D, incluindo
                              e                              co       a
a especifica¸˜o de parˆmetros como matrizes de transforma¸˜o e coeficientes de ilumina¸˜o, m´todos
              ca            a                                          ca                          ca    e
de antialiasing e opera¸˜es sobre pixels, mas n˜o provˆ mecanismos para descrever ou modelar objetos
                             co                       a       e
geom´tricos complexos.
       e


1.2      Aplica¸˜es da CG
               co
A 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
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 seu
relacionamento com o processamento de imagens. Tamb´m n˜o pretendemos explorar todo o escopo de
                                                        e    a
aplica¸˜es da CG, mas estudar os conceitos gerais envolvidos na programa¸˜o das primitivas gr´ficas que
      co                                                                 ca                  a
est˜o por tr´s dessas aplica¸˜es.
   a        a               co


1.3     Hardware Gr´fico
                   a
Um sistema de hardware para computa¸˜o gr´fica consiste essencialmente de dispositivos gr´ficos de
                                            ca    a                                                  a
entrada e sa´ (I/O) ligados a um computador (Figura 1.2). Ao conjunto de dispositivos de I/O gr´ficos
              ıda                                                                                       a
alocados para utiliza¸˜o por uma unica pessoa por vez denomina-se genericamente de “esta¸˜o de trabalho
                      ca            ´                                                         ca
gr´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      a
forma que mais de um dos v´rios dispositivos de I/O dispon´
                                a                                ıveis podem estar conectados e utilizando
o computador hospedeiro. Como em CG ´ freq¨ente a manipula¸˜o de grandes quantidades de dados,
                                              e    u                  ca
o computador deve ser equipado de mem´ria secund´ria com alta capacidade de armazenagem. Al´m
                                             o            a                                               e
disso, um canal de comunica¸˜o de alta velocidade ´ necess´rio para reduzir os tempos de espera. Isto
                                ca                      e      a
normalmente ´ feito atrav´s de comunica¸˜o local sobre um barramento paralelo com velocidade de
                e            e                ca
transmiss˜o de dados da ordem de um milh˜o de bits por segundo. Se o equipamento gr´fico est´ distante
            a                                 a                                           a         a
do processador (conex˜o remota), um canal de comunica¸˜o serial pode ser necess´rio. Transmiss˜o
                         a                                    ca                         a                 a
serial ass´ıncrona pode ser feita a velocidades de at´ 19.2 kbps (milhares de bits por segundo). Mesmo tal
                                                      e
velocidade pode ser muito lenta para alguns objetivos como anima¸˜o gr´fica de alta resolu¸˜o, onde cada
                                                                     ca   a                    ca
frame de imagem pode ter um megabyte de dados. Um sistema de conex˜o ideal nesse caso ´ uma Local
                                                                            a                     e
Area Network (LAN) como a Ethernet. Os dispositivos de sa´ gr´ficos podem ser de natureza digital
                                                                 ıda a
ou anal´gica, resultando em duas classes de gr´ficos, denominados vector graphics (gr´ficos vetoriais),
         o                                         a                                        a
que desenham figuras tra¸ando seq¨ˆncias de segmentos de reta (vetores); e raster graphics (gr´ficos de
                           c          ue                                                              a
varredura, ou matriciais), que desenham figuras pelo preenchimento de uma matriz de pontos (pixels).


1.4     Resolu¸˜o Gr´fica
              ca    a
Virtualmente 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    u
de posi¸˜es (ou pontos, ou pixels) horizontais e verticais que ele pode distinguir. Existem 4 parˆmetros
       co                                                                                        a
que 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
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 dots
definem resolu¸˜es gr´ficas. Dispositivos de visualiza¸˜o podem ter a mesma resolu¸˜o gr´fica, com re-
              co     a                               ca                            ca    a
solu¸˜es f´
    co ısicas muito diferentes. O ideal seria ter um aspect ratio igual ou pr´ximo de 1.
                                                                             o


1.5     Sistemas de Coordenadas
Na CG ´ necess´rio definir sistemas de coordenadas para quantificar os dados que est˜o
      e       a                                                                   a


sendo manipulados. J´ vimos que os dispositivos de visualiza¸˜o gr´fica matriciais consistem de uma
                      a                                     ca    a
matriz de pixels endere¸´veis, e um gr´fico ´ formado “acendendo” ou “apagando” um pixel. Os pixels
                       ca             a    e
s˜o endere¸ados por dois n´meros inteiros que d˜o suas coordenadas horizontal e vertical, dcx, e dcy,
 a        c                u                    a
respectivamente, 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    u
endere¸ado. O pixel endere¸ado como (0, 0) est´ geralmente no canto inferior esquerdo do retˆngulo de
       c                    c                    a                                            a
visualiza¸˜o. As coordenadas (dcx, dcy) s˜o chamadas de coordenadas do dispositivo, e podem assumir
         ca                               a
apenas 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        ca
dinates), para efeito de padroniza¸˜o (ndcx, ndcy). NDCs s˜o vari´veis reais, geralmente definidas no
                                   ca                        a      a
intervalo de 0 a 1:

                                               0 ≤ ndcx ≤ 1                                       (1.3)


                                                   12
0 ≤ ndcy ≤ 1                                            (1.4)
   A coordenada NDC (0, 0) corresponde ` origem (0, 0) nas coordenadas do dispositivo, e a coordenada
                                            a
NDC (1, 1) refere-se ao pixel no canto superior direito, que corresponde ao pixel (ndhm1, ndvm1) nas
coordenadas do dispositivo. A vantagem da utiliza¸˜o de NDCs ´ que padr˜es gr´ficos podem ser discuti-
                                                    ca         e         o    a
dos usando um sistema de coordenadas independente de dispositivos gr´ficos espec´
                                                                      a          ıficos. Obviamente, os
dados gr´ficos precisam ser transformados do sistema de coordenadas independente para o sistema de co-
        a
ordenadas do dispositivo no momento de visualiza¸˜o. O mapeamento de NDCs (reais) para coordenadas
                                                   ca
do 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                   ca
e pcy ´ a distˆncia f´
      e       a      ısica ao longo do eixo y a partir do extremo inferior. As unidades de medida utilizadas
s˜o polegadas ou mil´
 a                     ımetros. A transforma¸˜o de coordenadas f´
                                               ca                    ısicas para coordenadas do dispositivo ´e
dada 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                                                                    a
de 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
          a
a
´rea retangular no espa¸o bidimensional, denominada de janela. A transforma¸˜o de coordenadas do
                       c                                                     ca
usu´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             a
do usu´rio para NDCs, e de NDCs para coordenadas do dispositivo. Da mesma forma, dados de entrada
       a
gr´ficos precisam ser transformados de coordenadas do dispositivo para NDCs, e depois para coordenadas
  a
do usu´rio (Figura 1.3).
       a




                       Figura 1.3: Sistemas de coordenadas e suas transforma¸˜es.
                                                                            co




                                                     13
1.6     Exerc´
             ıcios
Escreva os procedimentos inp to ndc, ndc to user, user to ndc e ndc to dc, que transformam dados entre
os v´rios sistemas de coordenadas, conforme ilustrado na Figura 1.3. Repita o exerc´ assumindo que
    a                                                                                ıcio
o intervalo de varia¸˜o do sistema NDC vai de:
                    ca
  (i) -1 a +1 (coordenadas normalizadas centradas)

 (ii) 0 a 100




                                                 14
Cap´
   ıtulo 2

Dispositivos de Visualiza¸˜o
                         ca

Toda imagem criada atrav´s de recursos computacionais deve ser representada em algum dispositivo f´
                            e                                                                           ısico
que permita a sua visualiza¸˜o. Diversas tecnologias e diferentes tipos de dispositivos s˜o utilizados para
                              ca                                                         a
gerar representa¸˜es visuais, sendo que o desenvolvimento dessas tecnologias teve um papel fundamental
                  co
na evolu¸˜o da CG.
         ca
   Tanto para o usu´rio como para o implementador de sistemas gr´ficos ´ importante conhecer as
                       a                                                  a      e
caracter´
        ısticas de cada uma dessas tecnologias para sua melhor utiliza¸˜o. Vamos discutir alguns aspectos
                                                                      ca
da arquitetura e organiza¸˜o dos tipos mais comuns dos dispositivos de exibi¸˜o gr´fica, sem entrar em
                           ca                                                   ca    a
detalhes t´cnicos.
          e
    ´
   E poss´ ıvel classificar os dispositivos de exibi¸˜o (tra¸adores, impressoras e terminais de v´
                                                   ca      c                                       ıdeo) em
duas principais categorias, segundo a forma pela qual as imagens s˜o geradas: dispositivos vetoriais e
                                                                      a
dispositivos matriciais. Os dispositivos gr´ficos vetoriais conseguem tra¸ar segmentos de reta perfeitos
                                            a                              c
entre dois pontos da malha finita de pontos definida por suas superf´     ıcies de exibi¸˜o. Os dispositivos
                                                                                      ca
matriciais, por outro lado, apenas conseguem tra¸ar pontos, tamb´m em uma malha finita. Assim,
                                                      c               e
segmentos de reta s˜o tra¸ados como sequˆncias de pontos pr´ximos.
                     a     c                e                  o


2.1     Dispositivos Gr´ficos Vetoriais
                       a
2.1.1    Tra¸adores Digitais
            c
Tra¸adores (plotters) s˜o dispositivos eletromecˆnicos que produzem o desenho pelo movimento de
     c                     a                        a
uma caneta sobre a superf´ do papel. A primitiva gr´fica b´sica nesse tipo de dispositivo ´ o segmento
                          ıcie                         a     a                             e
de 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                                  a
calizado 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                     c
que suporta uma caneta perpendicularmente ` mesa, a qual pode ser pressionada contra o papel ou
                                               a
levantada 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       ca
um 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                          e
bra¸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    c
pela 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      e
instru¸˜es diretamente do computador ou de um arquivo que descreve o desenho.
       co

2.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
                                                     a
car´
   ıssimo CRT (Cathode Ray Tube) do tipo usado em oscilosc´pios. Como o display dos oscilosc´pios,
                                                               o                                  o
os monitores tinham como entradas duas voltagens, x e y, que direcionavam um feixe de el´trons para
                                                                                             e
um 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       ca
de 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                            a
canh˜o emite um fino feixe de el´trons que, acelerados, chocam-se contra a superf´ fosforecente da tela.
     a                          e                                               ıcie
Sob a a¸˜o dos el´trons, o material fosforecente incandesce, emitindo luz no ponto da tela atingido pelo
         ca      e


                                                     15
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                                      e
ponto 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     a
cai a zero logo ap´s a interrup¸˜o do bombardeio de el´trons), de forma que toda a figura precisa ser
                   o           ca                        e
continuamente 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
    ı                                                                 e
haver um atraso significativo entre o tra¸ado do primeiro e do ultimo vetores, e alguns do vetores tra¸ados
                                        c                     ´                                      c
inicialmente podem desaparecer nesse per´ ıodo. O resultado ´ que o tubo n˜o consegue retra¸ar a imagem
                                                            e             a                  c
de modo suficientemente r´pido para evitar que um efeito de flickering (“cintila¸˜o”) torne-se aparente
                           a                                                       ca
na 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                                              ıda
reta, uma vez que apenas as coordenadas dos extremos dos segmentos, e as dos cantos da tela precisam
ser armazenadas. Esta era uma caracter´  ıstica importante no in´ da CG, j´ que a mem´ria era muito
                                                                ıcio       a            o
cara.
    O computador gera as coordenadas dos pontos que definem a figura a ser mostrada na tela, e um
DAC (conversor digital-anal´gico) ´ necess´rio para converter os pontos digitais em voltagens a serem
                             o      e       a
enviadas para o CRT (Figura 2.2).
    As desvantagens dos terminais gr´ficos vetoriais eram: a tecnologia cara, o efeito de flickering, e
                                      a
a mem´ria limitada, que inviabilizava a descri¸˜o de imagens com detalhes complexos. As vantagens:
       o                                         ca
dispositivo gr´fico de alta resolu¸˜o (pelo menos 1000x1000), rapidez na gera¸˜o de imagens simples, o
              a                  ca                                          ca
que os torna adequados para testes iniciais em anima¸˜o.
                                                      ca




                                                   16
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA
CG APOSTILA

Más contenido relacionado

La actualidad más candente

Relatório de Projecto de Licenciatura
Relatório de Projecto de LicenciaturaRelatório de Projecto de Licenciatura
Relatório de Projecto de LicenciaturaJoel Carvalho
 
Apostila c# iniciantes
Apostila c# iniciantesApostila c# iniciantes
Apostila c# iniciantesCaique Moretto
 
Apostila r gen melhor
Apostila r   gen melhorApostila r   gen melhor
Apostila r gen melhorGino Andrade
 
Ncl e Lua - desenvolvendo aplicações interativas para tv digital
Ncl e Lua - desenvolvendo aplicações interativas para tv digitalNcl e Lua - desenvolvendo aplicações interativas para tv digital
Ncl e Lua - desenvolvendo aplicações interativas para tv digitalRafael Carvalho
 
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2Caique Moretto
 
K19 k32-desenvolvimento-web-com-aspnet-mvc
K19 k32-desenvolvimento-web-com-aspnet-mvcK19 k32-desenvolvimento-web-com-aspnet-mvc
K19 k32-desenvolvimento-web-com-aspnet-mvcTrioBlack Trioblack
 
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2surdido
 
Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Robson Silva Espig
 
Guia Aberto Android ed.2
Guia Aberto Android ed.2Guia Aberto Android ed.2
Guia Aberto Android ed.2Átila Camurça
 
K19 k03-sql-e-modelo-relacional
K19 k03-sql-e-modelo-relacionalK19 k03-sql-e-modelo-relacional
K19 k03-sql-e-modelo-relacionalJean Lopes
 
Curso de robotica movel
Curso de robotica movelCurso de robotica movel
Curso de robotica movelRibeiro Baieta
 

La actualidad más candente (18)

Curso estatistica descritiva no r
Curso   estatistica descritiva no rCurso   estatistica descritiva no r
Curso estatistica descritiva no r
 
Material LINUX
Material LINUXMaterial LINUX
Material LINUX
 
Relatório de Projecto de Licenciatura
Relatório de Projecto de LicenciaturaRelatório de Projecto de Licenciatura
Relatório de Projecto de Licenciatura
 
Ap tut arduino
Ap   tut arduinoAp   tut arduino
Ap tut arduino
 
Tutorial de Uppaal
Tutorial de UppaalTutorial de Uppaal
Tutorial de Uppaal
 
Apostila c# iniciantes
Apostila c# iniciantesApostila c# iniciantes
Apostila c# iniciantes
 
Apostila r gen melhor
Apostila r   gen melhorApostila r   gen melhor
Apostila r gen melhor
 
Ncl e Lua - desenvolvendo aplicações interativas para tv digital
Ncl e Lua - desenvolvendo aplicações interativas para tv digitalNcl e Lua - desenvolvendo aplicações interativas para tv digital
Ncl e Lua - desenvolvendo aplicações interativas para tv digital
 
Manual do Kile
Manual do KileManual do Kile
Manual do Kile
 
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
 
Installdebian
InstalldebianInstalldebian
Installdebian
 
K19 k32-desenvolvimento-web-com-aspnet-mvc
K19 k32-desenvolvimento-web-com-aspnet-mvcK19 k32-desenvolvimento-web-com-aspnet-mvc
K19 k32-desenvolvimento-web-com-aspnet-mvc
 
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
 
Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)
 
Guia Aberto Android ed.2
Guia Aberto Android ed.2Guia Aberto Android ed.2
Guia Aberto Android ed.2
 
Apostila JSF 2.0 - K19
Apostila JSF 2.0 - K19Apostila JSF 2.0 - K19
Apostila JSF 2.0 - K19
 
K19 k03-sql-e-modelo-relacional
K19 k03-sql-e-modelo-relacionalK19 k03-sql-e-modelo-relacional
K19 k03-sql-e-modelo-relacional
 
Curso de robotica movel
Curso de robotica movelCurso de robotica movel
Curso de robotica movel
 

Similar a CG APOSTILA (20)

Apostila completa de eletronica digita(fct)
Apostila completa de eletronica digita(fct)Apostila completa de eletronica digita(fct)
Apostila completa de eletronica digita(fct)
 
Handbook de ti_para_concursos
Handbook de ti_para_concursosHandbook de ti_para_concursos
Handbook de ti_para_concursos
 
Handbook de ti para concursos – o guia definitivo
Handbook de ti para concursos – o guia definitivoHandbook de ti para concursos – o guia definitivo
Handbook de ti para concursos – o guia definitivo
 
Microcontroladores pic
Microcontroladores picMicrocontroladores pic
Microcontroladores pic
 
Tut arduino
Tut arduinoTut arduino
Tut arduino
 
Curso C
Curso CCurso C
Curso C
 
Alternativas ao Software Proprietário
Alternativas ao Software ProprietárioAlternativas ao Software Proprietário
Alternativas ao Software Proprietário
 
manual pc43
manual pc43manual pc43
manual pc43
 
Manual de portugol
Manual de portugolManual de portugol
Manual de portugol
 
Apostila de Robotica
Apostila de RoboticaApostila de Robotica
Apostila de Robotica
 
Guia xerox workcentre_3550
Guia xerox workcentre_3550Guia xerox workcentre_3550
Guia xerox workcentre_3550
 
Poojava
PoojavaPoojava
Poojava
 
Poojava
PoojavaPoojava
Poojava
 
Apostila latex
Apostila latexApostila latex
Apostila latex
 
Apostila de PIC
Apostila de PICApostila de PIC
Apostila de PIC
 
Manual call report_v2.0
Manual call report_v2.0Manual call report_v2.0
Manual call report_v2.0
 
Manual call report_v2.0
Manual call report_v2.0Manual call report_v2.0
Manual call report_v2.0
 
Linux iniciantes
Linux iniciantesLinux iniciantes
Linux iniciantes
 
Linux > GUIA FOCA-Linux. 1 of 3.
Linux > GUIA FOCA-Linux. 1 of 3.Linux > GUIA FOCA-Linux. 1 of 3.
Linux > GUIA FOCA-Linux. 1 of 3.
 
Index
IndexIndex
Index
 

Más de Demétrio Luiz Riguete Gripp

Norma anp armazenamento de gás (glp) para comércio ou não
Norma anp armazenamento de gás (glp) para comércio ou nãoNorma anp armazenamento de gás (glp) para comércio ou não
Norma anp armazenamento de gás (glp) para comércio ou nãoDemétrio Luiz Riguete Gripp
 
Estudo de Impacto de Vizinhança (EIV) - Porto Maravilha (Rio de Janeiro/RJ)
Estudo de Impacto de Vizinhança (EIV) - Porto Maravilha (Rio de Janeiro/RJ)Estudo de Impacto de Vizinhança (EIV) - Porto Maravilha (Rio de Janeiro/RJ)
Estudo de Impacto de Vizinhança (EIV) - Porto Maravilha (Rio de Janeiro/RJ)Demétrio Luiz Riguete Gripp
 
Desenvolvimento sustentável das cidades latino americanas
Desenvolvimento sustentável das cidades latino americanasDesenvolvimento sustentável das cidades latino americanas
Desenvolvimento sustentável das cidades latino americanasDemétrio Luiz Riguete Gripp
 
Workshop rio criativo de business model luz consultoria
Workshop rio criativo de business model   luz consultoriaWorkshop rio criativo de business model   luz consultoria
Workshop rio criativo de business model luz consultoriaDemétrio Luiz Riguete Gripp
 

Más de Demétrio Luiz Riguete Gripp (15)

Regularização de terra e da moradia no Brasil
Regularização de terra e da moradia no BrasilRegularização de terra e da moradia no Brasil
Regularização de terra e da moradia no Brasil
 
Norma anp armazenamento de gás (glp) para comércio ou não
Norma anp armazenamento de gás (glp) para comércio ou nãoNorma anp armazenamento de gás (glp) para comércio ou não
Norma anp armazenamento de gás (glp) para comércio ou não
 
Estudo de Impacto de Vizinhança (EIV) - Porto Maravilha (Rio de Janeiro/RJ)
Estudo de Impacto de Vizinhança (EIV) - Porto Maravilha (Rio de Janeiro/RJ)Estudo de Impacto de Vizinhança (EIV) - Porto Maravilha (Rio de Janeiro/RJ)
Estudo de Impacto de Vizinhança (EIV) - Porto Maravilha (Rio de Janeiro/RJ)
 
Plano diretor : implementação e acompanhamento
Plano diretor : implementação e acompanhamentoPlano diretor : implementação e acompanhamento
Plano diretor : implementação e acompanhamento
 
Tecnologias para transformar a educação
Tecnologias para transformar a educaçãoTecnologias para transformar a educação
Tecnologias para transformar a educação
 
Desenvolvimento sustentável das cidades latino americanas
Desenvolvimento sustentável das cidades latino americanasDesenvolvimento sustentável das cidades latino americanas
Desenvolvimento sustentável das cidades latino americanas
 
Mapa da violência jovens do brasil (2014)
Mapa da violência    jovens do brasil (2014)Mapa da violência    jovens do brasil (2014)
Mapa da violência jovens do brasil (2014)
 
Ong e políticas públicas
Ong e políticas públicasOng e políticas públicas
Ong e políticas públicas
 
Gestão de resíduos sólidos
Gestão de resíduos sólidosGestão de resíduos sólidos
Gestão de resíduos sólidos
 
Design para projetos
Design para projetosDesign para projetos
Design para projetos
 
Equator principles III
Equator principles IIIEquator principles III
Equator principles III
 
Planejamento de controle e manutenção
Planejamento de controle e manutençãoPlanejamento de controle e manutenção
Planejamento de controle e manutenção
 
Palestra sobre planejamento financeiro mila viana
Palestra sobre planejamento financeiro  mila vianaPalestra sobre planejamento financeiro  mila viana
Palestra sobre planejamento financeiro mila viana
 
Mba executivo em negócios financeiros
Mba executivo em negócios financeirosMba executivo em negócios financeiros
Mba executivo em negócios financeiros
 
Workshop rio criativo de business model luz consultoria
Workshop rio criativo de business model   luz consultoriaWorkshop rio criativo de business model   luz consultoria
Workshop rio criativo de business model luz consultoria
 

CG APOSTILA

  • 1. Apostila de Computa¸˜o Gr´fica ca a Agma Juci Machado Traina Maria Cristina Ferreira de Oliveira 16 de maio de 2006
  • 2. Resumo Este ´ o material utilizado no Instituto de Ciˆncias matem´ticas e de Computa¸˜o da USP-S˜o Carlos e e a ca a para as disciplinas de computa¸˜o gr´fica ministradas pelas Profa. Dra. Agma Juci Machado Traina e ca a Profa. Dra. Maria Cristina Ferreira de Oliveira.
  • 3. Sum´rio a Sum´rio a 2 Lista de Figuras 5 1 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3 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 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5 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 . . . . . . . . . . . . . . 64 6 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 77 7 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 . . . . . . . . . . . . . . . . . . . . . . . . . . 81 8 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 . . . . . . . . . . 90 9 Apostila Modelagem 93 10 Rendering 94 11 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. 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Bibliografia 113 A Hist´rico o 114 4
  • 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. 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 52 5.4 Derivando a equa¸˜o de rota¸˜o. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca ca 52 5.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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.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 54 5.7 Reflex˜o de um objeto em torno do eixo x. . . . . . . . . . . . . . . . . . . . . . . . . . . a 55 5.8 Reflex˜o de um objeto em torno de um eixo perpendicular ao plano xy, passando pela origem. a 56 5.9 Rota¸˜o em rela¸˜o ao Ponto P 1, por um ˆngulo θ. . . . . . . . . . . . . . . . . . . . . . . ca ca a 58 5.10 Escala e rota¸˜o de uma casa em rela¸˜o ao ponto P1 . . . . . . . . . . . . . . . . . . . . . ca ca 59 5.11 Janela em Coordenadas do mundo e porta de vis˜o em coordenadas de tela. . . . . . . . . a 60 5.12 Duas portas de vis˜o associadas a mesma janela. . . . . . . . . . . . . . . . . . . . . . . . a 60 5.13 Os passos da transforma¸˜o janela - porta de vis˜o. . . . . . . . . . . . . . . . . . . . . . . ca a 61 5.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 61 5.15 Sistema de Coordenadas dado pela Regra da M˜o Direita. . . . . . . . . . . . . . . . . . . a 63 5.16 Transformando P1 , P2 e P3 da posi¸˜o inicial em (a) para a posi¸˜o final em (b). . . . . . ca ca 65 5.17 Rota¸˜o dos pontos P1 , P2 e P3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca 66 5.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 66 5.19 Rota¸˜o em rela¸˜o ao eixo z. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca ca 67 5.20 Os vetores unit´rios Rx , Ry e Rz , os quais s˜o transformados nos eixos principais. . . . . a a 68 6.1 Atributos da cˆmera [Schr¨eder, 1998]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a o 69 6.2 Movimentos de cˆmera [Schr¨eder, 1998]. . . . . . . . . . . . . . . . . . . . . . . . . . . . a o 70 6.3 Movimentos de cˆmera [Schr¨eder, 1998]. . . . . . . . . . . . . . . . . . . . . . . . . . . . a o 71 6.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]. . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 6.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 72 6.6 Taxomia de proje¸˜es [Plastock and Kalley, 1999]. . . . . . . . . . . . . . . . . . . . . . . co 73 6.7 Linha AB e sua proje¸˜o A’B’: (a) perspectiva; (b) ortogonal. . . . . . . . . . . . . . . . . ca 73 6.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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6.9 Proje¸˜es perspectivas com 2 pontos de fuga ( o plano de proje¸˜o intercepta 2 eixos (x e co ca z)). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6.10 Proje¸˜es perspectivas com 3 pontos de fuga ( o plano de proje¸˜o intercepta os 3 eixos). co ca 75 6.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 75 6.12 Confus˜o visual da perpectiva (objeto atr´s do centro de proje¸˜o). . . . . . . . . . . . . . a a ca 76 6.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 76 6.14 Proje¸˜o ortogonal de um ponto no plano de proje¸˜o [Hearn and Baker, 1994]. . . . . . . ca ca 77 7.1 Exemplos de recorte de segmentos de reta. . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 7.2 C´digos das regi˜es. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o 80 7.3 Funcionamento do algoritmo de Cohen-Sutherland para recorte de segmentos. . . . . . . . 80 7.4 Algoritmo de Sutherland-Hodgman para Recorte de Pol´ ıgonos. . . . . . . . . . . . . . . . 83 7.5 Exemptos de recorte de pol´ıgonos. (a) M´ltiplos componentes. (b) Caso convexo (c) Caso u cˆncavo com muitas arestas exteriores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 83 7.6 Quatro situa¸˜es poss´ co ıveis no recorte de pol´ ıgonos. . . . . . . . . . . . . . . . . . . . . . . 84 8.1 Representa¸˜o de superf´ ca ıcies atrav´s de malhas. . . . . . . . e . . . . . . . . . . . . . . . . . 86 8.2 Aproxima¸˜o de curvas por segmentos de reta conectados. . ca . . . . . . . . . . . . . . . . . 87 8.3 Aproxima¸˜o de curvas por segmentos de reta conectados. . ca . . . . . . . . . . . . . . . . . 88 8.4 Pontos de uma circunferˆncia. . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . 90 8.5 Representa¸˜o de uma curva de B´zier definida pelos pontos ca e B0 , B1 , B2 e B3 . . . . . . . . 90 8.6 Fun¸˜es de blending para v´rios valores de n. . . . . . . . . co a . . . . . . . . . . . . . . . . . 91 11.1 Espectro eletromagn´tico [Gro94]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 95 6
  • 8. 11.2 Ilustra¸˜o da mistura de cores aditivas [For94]. . . . . . . . . . . . . . ca . . . . . . . . . . . 97 11.3 Ilustra¸˜o da mistura de cores subtrativas [For94]. . . . . . . . . . . . ca . . . . . . . . . . . 97 11.4 Ilustra¸˜o da obten¸˜o de tints, shades e tones. . . . . . . . . . . . . . ca ca . . . . . . . . . . . 97 11.5 Diagrama de cromaticidade do CIE [Hea94]. . . . . . . . . . . . . . . . . . . . . . . . . . . 98 11.6 Representa¸˜o de escalas de cor no diagrama de cromaticidade do CIE ca [Hea94]. . . . . . . 99 11.7 Cubo do RGB [Fol96]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 11.8 Cone hexagonal do HSV [Fol96]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 11.9 Cone duplo do HLS [Fol96]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 12.1 Efeitos sobre uma imagem, de se reduzir o tamanho da grade de amostragem. . . . . . . . 103 12.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. . . . . . 104 12.3 Representa¸˜o de um pixel P com 8-bits (8 planos) de profundidade. . . . . . . . . . . . . ca 104 12.4 Organiza¸˜o de uma LUT, para um sistema de pixels de 8 bits. . . . . . . . . . . . . . . . ca 105 12.5 Imagens e histogramas de intensidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 12.6 Efeito de uma transforma¸˜o dos n´ ca ıveis de cinza efetuado sobre o histograma. . . . . . . . 107 12.7 Manipula¸˜o de janelas de intensidade da imagem atrav´s do histograma. . . . . . . . . . ca e 107 12.8 Sinais “ru´ıdo” (a) e “degrau” (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 12.9 Sinais “ru´ıdo” (a) e “degrau” (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 12.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. . . . . . . . . . . . . . . . . . . . . 110 12.11Efeito do filtro da mediana sobre o “ru´ ıdo” e o “degrau”. . . . . . . . . . . . . . . . . . . 110 12.12Uma transforma¸˜o geom´trica de 90o graus. . . . . . . . . . . . . . . . . . . . . . . . . . . ca e 111 7
  • 9. Cap´ ıtulo 1 Introdu¸˜o ` Computa¸˜o Gr´fica ca a ca a A 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 ca preta¸˜o de modelos e imagens de objetos utilizando computador. Tais modelos vˆm de uma variedade ca e de 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 e Visualiza¸˜o Computacional [Minghim and Oliveira, 1997, Schr¨eder et al., 1996], que usa t´cnicas de ca o e Computa¸˜o Gr´fica para representar informa¸˜o, de forma a facilitar o entendimento de conjuntos de ca a ca dados num´ricos de alta complexidade. Exemplos de ´reas de aplica¸˜o s˜o: visualiza¸˜o de imagens e a ca a ca m´dicas, meteorologia, dados financeiros, visualiza¸˜o de programas, dinˆmica dos fluidos, e muitas e ca a 8
  • 10. outras. Nelas, o que existe em comum ´ que a representa¸˜o gr´fica (superf´ e ca a ıcies, part´ıculas, ´ ıcones) s˜oa geradas automaticamente a partir do conjunto de dados. Ao usu´rio cabe definir parˆmetros e atributos a a da imagem para melhor “navegar” seu conjunto de dados. Dessa maneira, a visualiza¸˜o de dados partilha ca de 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 u e a aparˆncia dos objetos e suas imagens visualizadas na tela, usando dispositivos como o teclado e o e mouse. Entretanto, at´ o in´ e ıcio dos anos 80, a computa¸˜o gr´fica era uma disciplina restrita e alta- ca a mente especializada. Devido principalmente ao alto custo do hardware, poucos programas aplicativos exploravam gr´ficos. O advento dos computadores pessoais de baixo custo, como o IBM-PC e o Apple a Macintosh, com terminais gr´ficos de varredura (raster graphics displays), popularizou o uso de gr´ficos a a na intera¸˜o usu´rio-computador. ca a Os displays gr´ficos de baixo custo possibilitaram o desenvolvimento de in´meros aplicativos baratos a u e f´ceis de usar, que dispunham de interfaces gr´ficas - planilhas, processadores de texto, programas de a a desenho... As interfaces evoluiram e introduziu-se o conceito de desktop - uma met´fora para uma mesa a de trabalho. Nessas interfaces gr´ficas, atrav´s de um gerenciador de janelas (window manager ) o usu´rio a e a pode 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 a deles a um simples toque no mouse. ´ Icones (icons) s˜o usados para representar arquivos de dados, progra- a mas e abstra¸˜es de objetos de um escrit´rio - como arquivos, caixas de correio (mailboxes), impressoras, co o latas de lixo - nas quais s˜o executadas opera¸˜es an´logas `s da vida real. Para ativar os programas, o a co a a usu´rio pode selecionar ´ a ıcones, ou usar buttons e menus dinˆmicos. Objetos s˜o manipulados diretamente a a atrav´s de opera¸˜es de pointing e clicking feitas com o mouse. Atualmente, mesmo aplicativos que ma- e co nipulam texto (como processadores de texto) ou dados num´ricos (como planilhas) usam interfaces desse e tipo, 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 ca ciˆ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 a computacionais. Processamento de imagens ´ uma ´rea relacionada que trata do processo inverso: a e a an´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...). a As imagens em quest˜o constituem uma representa¸˜o visual de objetos bi- ou tridimensionais descritos a ca atrav´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 a feridas para o computador por mecanismos diversos - digitaliza¸˜o de fotos, tomadas de uma cˆmera de ca a v´ıdeo, ou imagens de sat´lite - para serem manipuladas visando diferentes objetivos. e 1.1 Sistemas Gr´ficos a A Computa¸˜o Gr´fica (especialmente as componentes relativas a gr´ficos 3D e a gr´ficos 3D interativos) ca a a a desenvolveu-se de modo bem diverso: de simples programas gr´ficos para computadores pessoais ` pro- a a gramas de modelagem e de visualiza¸˜o em workstations e supercomputadores. Como o interesse em CG ca cresceu, ´ importante escrever aplica¸˜es que possam rodar em diferentes plataformas. Um padr˜o para e co a desenvolvimento de programas gr´ficos facilita esta tarefa eliminando a necessidade de escrever c´digo a o para um driver gr´fico distinto para cada plataforma na qual a aplica¸˜o deve rodar. Para se padronizar a ca a constru¸˜o de aplicativos que se utilizam de recursos gr´ficos e torn´-los o mais independentes poss´ ca a a ıvel de 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 Postscript que se tornou um padr˜o por facilitar a publica¸˜o de documentos est´ticos contendo gr´ficos 2D e textos. a ca a a Outro exemplo ´ o sistema XWindow, que se tornou padr˜o para o desenvolvimento de interfaces gr´ficas e a a 2D em workstations UNIX. Um programador usa o X para obter uma janela em um display gr´fico no a qual um texto ou um gr´fico 2D pode ser desenhado. A ado¸˜o do X pela maioria dos fabricantes de a ca workstation 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 e um programa pode rodar em uma workstation e ler a entrada e ser exibido em outra workstation, mesmo de outro fabricante. Para gr´ficos 3D foram propostos v´rios padr˜es. A primeira tentativa foi o Sistema Core - Core a a o Graphics System - (1977 e 1979) pelos americanos. Mas a primeira especifica¸˜o gr´fica realmente pa- ca a 9
  • 11. dronizada foi o GKS - Graphical Kernel System, pela ANSI e ISO em 1985. O GKS ´ uma vers˜o maise a elaborada que o Core. O GKS suporta um conjunto de primitivas gr´ficas interrelacionadas, tais como: a desenho de linhas, pol´ ıgonos, caracteres, etc., bem como seus atributos. Mas n˜o suporta agrupamentos a de primitivas hier´rquicas de estruturas 3D. Um sistema relativamente famoso ´ PHIGS (Programmer’s a e Hierarchical Interactive Graphics System). Baseado no GKS, PHIGS ´ um padr˜o ANSI. PHIGS (e seu e a descendente, PHIGS+) provˆem meios para manipular e desenhar objetos 3D encapsulando descri¸˜es de e co objetos e atributos em uma display list. A display list ´ utilizada quando o objeto ´ exibido ou manipu- e e lado, 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 e rede de computadores. Uma desvantagem da display list ´ a necessidade de um esfor¸o consider´vel e c a para reespecificar um objeto que est´ sendo modelado interativamente pelo usu´rio. Uma desvantagem a a do PHIGS e PHIGS+ (e GKS) ´ que eles n˜o tˆm suporte a recursos avan¸ados como mapeamento de e a e c textura. O XWindow ganhou uma extens˜o para o PHIGS, conhecida como PEX, de modo que o X pudesse a manipular e desenhar objetos 3D. Entre outras extens˜es, PEX soma-se de modo imediato ao PHIGS, o assim um objeto pode ser exibido durante a sua defini¸˜o sem a necessidade da display list. O PEX ca tamb´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 e ter´ısticas avan¸adas e pode ser utilizado em modo imediato ou com display list. OpenGL ´ um padr˜o c e a relativamente novo (sua primeira vers˜o ´ de 1992) e ´ baseado na biblioteca GL das workstations IRIS da a e e Silicon Graphics. Atualmente um cons´rcio de ind´strias ´ respons´vel pela gerenciamento da evolu¸˜o do o u e a ca OpenGL. Existe uma implementa¸˜o livre (c´digo fonte dispon´ ca o ıvel) do OpenGL conhecida com MesaGL ou Mesa3D. Como os outros sistemas gr´ficos, OpenGL oferece uma interface entre o software e o hardware gr´fico. a a A interface consiste em um conjunto de procedimentos e fun¸˜es que permitem a um programador es- co pecificar os objetos e as opera¸˜es que os envolvem produzindo imagens de alta qualidade. Como o co PEX, o OpenGL integra/permite a manipula¸˜o de objetos (desenhos) 3D ao X, mas tamb´m pode ser ca e integrado em outros sistemas de janela (por exemplo, Windows/NT) ou pode ser usado sem um sistema de janela. OpenGL provˆ controle direto sobre opera¸˜es gr´ficas fundamentais em 3D e 2D, incluindo e co a a especifica¸˜o de parˆmetros como matrizes de transforma¸˜o e coeficientes de ilumina¸˜o, m´todos ca a ca ca e de antialiasing e opera¸˜es sobre pixels, mas n˜o provˆ mecanismos para descrever ou modelar objetos co a e geom´tricos complexos. e 1.2 Aplica¸˜es da CG co A 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. 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 seu relacionamento com o processamento de imagens. Tamb´m n˜o pretendemos explorar todo o escopo de e a aplica¸˜es da CG, mas estudar os conceitos gerais envolvidos na programa¸˜o das primitivas gr´ficas que co ca a est˜o por tr´s dessas aplica¸˜es. a a co 1.3 Hardware Gr´fico a Um sistema de hardware para computa¸˜o gr´fica consiste essencialmente de dispositivos gr´ficos de ca a a entrada e sa´ (I/O) ligados a um computador (Figura 1.2). Ao conjunto de dispositivos de I/O gr´ficos ıda a alocados para utiliza¸˜o por uma unica pessoa por vez denomina-se genericamente de “esta¸˜o de trabalho ca ´ ca gr´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 a forma que mais de um dos v´rios dispositivos de I/O dispon´ a ıveis podem estar conectados e utilizando o computador hospedeiro. Como em CG ´ freq¨ente a manipula¸˜o de grandes quantidades de dados, e u ca o computador deve ser equipado de mem´ria secund´ria com alta capacidade de armazenagem. Al´m o a e disso, um canal de comunica¸˜o de alta velocidade ´ necess´rio para reduzir os tempos de espera. Isto ca e a normalmente ´ feito atrav´s de comunica¸˜o local sobre um barramento paralelo com velocidade de e e ca transmiss˜o de dados da ordem de um milh˜o de bits por segundo. Se o equipamento gr´fico est´ distante a a a a do processador (conex˜o remota), um canal de comunica¸˜o serial pode ser necess´rio. Transmiss˜o a ca a a serial ass´ıncrona pode ser feita a velocidades de at´ 19.2 kbps (milhares de bits por segundo). Mesmo tal e velocidade pode ser muito lenta para alguns objetivos como anima¸˜o gr´fica de alta resolu¸˜o, onde cada ca a ca frame de imagem pode ter um megabyte de dados. Um sistema de conex˜o ideal nesse caso ´ uma Local a e Area Network (LAN) como a Ethernet. Os dispositivos de sa´ gr´ficos podem ser de natureza digital ıda a ou anal´gica, resultando em duas classes de gr´ficos, denominados vector graphics (gr´ficos vetoriais), o a a que desenham figuras tra¸ando seq¨ˆncias de segmentos de reta (vetores); e raster graphics (gr´ficos de c ue a varredura, ou matriciais), que desenham figuras pelo preenchimento de uma matriz de pontos (pixels). 1.4 Resolu¸˜o Gr´fica ca a Virtualmente 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 u de posi¸˜es (ou pontos, ou pixels) horizontais e verticais que ele pode distinguir. Existem 4 parˆmetros co a que 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. 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 dots definem resolu¸˜es gr´ficas. Dispositivos de visualiza¸˜o podem ter a mesma resolu¸˜o gr´fica, com re- co a ca ca a solu¸˜es f´ co ısicas muito diferentes. O ideal seria ter um aspect ratio igual ou pr´ximo de 1. o 1.5 Sistemas de Coordenadas Na CG ´ necess´rio definir sistemas de coordenadas para quantificar os dados que est˜o e a a sendo manipulados. J´ vimos que os dispositivos de visualiza¸˜o gr´fica matriciais consistem de uma a ca a matriz de pixels endere¸´veis, e um gr´fico ´ formado “acendendo” ou “apagando” um pixel. Os pixels ca a e s˜o endere¸ados por dois n´meros inteiros que d˜o suas coordenadas horizontal e vertical, dcx, e dcy, a c u a respectivamente, 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 u endere¸ado. O pixel endere¸ado como (0, 0) est´ geralmente no canto inferior esquerdo do retˆngulo de c c a a visualiza¸˜o. As coordenadas (dcx, dcy) s˜o chamadas de coordenadas do dispositivo, e podem assumir ca a apenas 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 ca dinates), para efeito de padroniza¸˜o (ndcx, ndcy). NDCs s˜o vari´veis reais, geralmente definidas no ca a a intervalo de 0 a 1: 0 ≤ ndcx ≤ 1 (1.3) 12
  • 14. 0 ≤ ndcy ≤ 1 (1.4) A coordenada NDC (0, 0) corresponde ` origem (0, 0) nas coordenadas do dispositivo, e a coordenada a NDC (1, 1) refere-se ao pixel no canto superior direito, que corresponde ao pixel (ndhm1, ndvm1) nas coordenadas do dispositivo. A vantagem da utiliza¸˜o de NDCs ´ que padr˜es gr´ficos podem ser discuti- ca e o a dos usando um sistema de coordenadas independente de dispositivos gr´ficos espec´ a ıficos. Obviamente, os dados gr´ficos precisam ser transformados do sistema de coordenadas independente para o sistema de co- a ordenadas do dispositivo no momento de visualiza¸˜o. O mapeamento de NDCs (reais) para coordenadas ca do 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 ca e pcy ´ a distˆncia f´ e a ısica ao longo do eixo y a partir do extremo inferior. As unidades de medida utilizadas s˜o polegadas ou mil´ a ımetros. A transforma¸˜o de coordenadas f´ ca ısicas para coordenadas do dispositivo ´e dada 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 a de 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 a a ´rea retangular no espa¸o bidimensional, denominada de janela. A transforma¸˜o de coordenadas do c ca usu´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 a do usu´rio para NDCs, e de NDCs para coordenadas do dispositivo. Da mesma forma, dados de entrada a gr´ficos precisam ser transformados de coordenadas do dispositivo para NDCs, e depois para coordenadas a do usu´rio (Figura 1.3). a Figura 1.3: Sistemas de coordenadas e suas transforma¸˜es. co 13
  • 15. 1.6 Exerc´ ıcios Escreva os procedimentos inp to ndc, ndc to user, user to ndc e ndc to dc, que transformam dados entre os v´rios sistemas de coordenadas, conforme ilustrado na Figura 1.3. Repita o exerc´ assumindo que a ıcio o intervalo de varia¸˜o do sistema NDC vai de: ca (i) -1 a +1 (coordenadas normalizadas centradas) (ii) 0 a 100 14
  • 16. Cap´ ıtulo 2 Dispositivos de Visualiza¸˜o ca Toda imagem criada atrav´s de recursos computacionais deve ser representada em algum dispositivo f´ e ısico que permita a sua visualiza¸˜o. Diversas tecnologias e diferentes tipos de dispositivos s˜o utilizados para ca a gerar representa¸˜es visuais, sendo que o desenvolvimento dessas tecnologias teve um papel fundamental co na evolu¸˜o da CG. ca Tanto para o usu´rio como para o implementador de sistemas gr´ficos ´ importante conhecer as a a e caracter´ ısticas de cada uma dessas tecnologias para sua melhor utiliza¸˜o. Vamos discutir alguns aspectos ca da arquitetura e organiza¸˜o dos tipos mais comuns dos dispositivos de exibi¸˜o gr´fica, sem entrar em ca ca a detalhes t´cnicos. e ´ E poss´ ıvel classificar os dispositivos de exibi¸˜o (tra¸adores, impressoras e terminais de v´ ca c ıdeo) em duas principais categorias, segundo a forma pela qual as imagens s˜o geradas: dispositivos vetoriais e a dispositivos matriciais. Os dispositivos gr´ficos vetoriais conseguem tra¸ar segmentos de reta perfeitos a c entre dois pontos da malha finita de pontos definida por suas superf´ ıcies de exibi¸˜o. Os dispositivos ca matriciais, por outro lado, apenas conseguem tra¸ar pontos, tamb´m em uma malha finita. Assim, c e segmentos de reta s˜o tra¸ados como sequˆncias de pontos pr´ximos. a c e o 2.1 Dispositivos Gr´ficos Vetoriais a 2.1.1 Tra¸adores Digitais c Tra¸adores (plotters) s˜o dispositivos eletromecˆnicos que produzem o desenho pelo movimento de c a a uma caneta sobre a superf´ do papel. A primitiva gr´fica b´sica nesse tipo de dispositivo ´ o segmento ıcie a a e de 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 a calizado 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 c que suporta uma caneta perpendicularmente ` mesa, a qual pode ser pressionada contra o papel ou a levantada 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 ca um 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 e bra¸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 c pela 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 e instru¸˜es diretamente do computador ou de um arquivo que descreve o desenho. co 2.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 a car´ ıssimo CRT (Cathode Ray Tube) do tipo usado em oscilosc´pios. Como o display dos oscilosc´pios, o o os monitores tinham como entradas duas voltagens, x e y, que direcionavam um feixe de el´trons para e um 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 ca de 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 a canh˜o emite um fino feixe de el´trons que, acelerados, chocam-se contra a superf´ fosforecente da tela. a e ıcie Sob a a¸˜o dos el´trons, o material fosforecente incandesce, emitindo luz no ponto da tela atingido pelo ca e 15
  • 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 e ponto 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 a cai a zero logo ap´s a interrup¸˜o do bombardeio de el´trons), de forma que toda a figura precisa ser o ca e continuamente 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 ı e haver um atraso significativo entre o tra¸ado do primeiro e do ultimo vetores, e alguns do vetores tra¸ados c ´ c inicialmente podem desaparecer nesse per´ ıodo. O resultado ´ que o tubo n˜o consegue retra¸ar a imagem e a c de modo suficientemente r´pido para evitar que um efeito de flickering (“cintila¸˜o”) torne-se aparente a ca na 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 ıda reta, uma vez que apenas as coordenadas dos extremos dos segmentos, e as dos cantos da tela precisam ser armazenadas. Esta era uma caracter´ ıstica importante no in´ da CG, j´ que a mem´ria era muito ıcio a o cara. O computador gera as coordenadas dos pontos que definem a figura a ser mostrada na tela, e um DAC (conversor digital-anal´gico) ´ necess´rio para converter os pontos digitais em voltagens a serem o e a enviadas para o CRT (Figura 2.2). As desvantagens dos terminais gr´ficos vetoriais eram: a tecnologia cara, o efeito de flickering, e a a mem´ria limitada, que inviabilizava a descri¸˜o de imagens com detalhes complexos. As vantagens: o ca dispositivo gr´fico de alta resolu¸˜o (pelo menos 1000x1000), rapidez na gera¸˜o de imagens simples, o a ca ca que os torna adequados para testes iniciais em anima¸˜o. ca 16