Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Computação Gráfica Parte1, Notas de estudo de Aplicações de Ciências da Computação

Apostilas de Computação sobre a Computação Gráfica, Traçadores Digitais, Dispositivos de Video Vetoriais (Vector Refresh Display Tubes), Primitivas de Software para Dispositivos Vetoriais, Dispositivos Gráficos Matriciais.

Tipologia: Notas de estudo

2013

Compartilhado em 11/12/2013

Futebol13
Futebol13 🇧🇷

4.5

(204)

196 documentos

1 / 39

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Apostila de Computa¸ao Gr´afica
Agma Juci Machado Traina
Maria Cristina Ferreira de Oliveira
16 de maio de 2006
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27

Pré-visualização parcial do texto

Baixe Computação Gráfica Parte1 e outras Notas de estudo em PDF para Aplicações de Ciências da Computação, somente na Docsity!

Apostila de Computa¸c˜ao Gr´afica

Agma Juci Machado Traina

Maria Cristina Ferreira de Oliveira

16 de maio de 2006

Resumo

Este ´e o material utilizado no Instituto de Ciˆencias matem´aticas e de Computa¸c˜ao da USP-S˜ao Carlos para as disciplinas de computa¸c˜ao gr´afica ministradas pelas Profa. Dra. Agma Juci Machado Traina e Profa. Dra. Maria Cristina Ferreira de Oliveira.

  • Sum´ario
  • Lista de Figuras
  • 1 Introdu¸c˜ao `a Computa¸c˜ao Gr´afica
    • 1.1 Sistemas Gr´aficos
    • 1.2 Aplica¸c˜oes da CG
    • 1.3 Hardware Gr´afico
    • 1.4 Resolu¸c˜ao Gr´afica
    • 1.5 Sistemas de Coordenadas
    • 1.6 Exerc´ıcios
  • 2 Dispositivos de Visualiza¸c˜ao
    • 2.1 Dispositivos Gr´aficos Vetoriais
      • 2.1.1 Tra¸cadores Digitais
      • 2.1.2 Dispositivos de V´ıdeo Vetoriais (Vector Refresh Display Tubes)
      • 2.1.3 Terminais CRT com mem´oria (Direct View Storage Tubes)
    • 2.2 Primitivas de Software para Dispositivos Vetoriais
    • 2.3 Dispositivos Gr´aficos Matriciais
      • 2.3.1 Impressoras
      • 2.3.2 Dispositivos de V´ıdeo de Varredura (Raster Scanning VDUs)
      • 2.3.3 Primitivas de Software
    • 2.4 Exerc´ıcios
    • 2.5 Dispositivos de Entrada
      • 2.5.1 Teclado
      • 2.5.2 Ligth Pen
      • 2.5.3 Joystick
      • 2.5.4 Mouse
      • 2.5.5 Mesa Digitalizadora (Tablet)
      • 2.5.6 Data Glove
      • 2.5.7 Outros dispositivos
  • 3 Tra¸cado de Curvas em Dispositivos Gr´aficos Matriciais
    • 3.1 Simetria e Reflex˜ao
    • 3.2 Convers˜ao Matricial de Segmentos de Reta - de Retas 3.2.1 Caracter´ısticas Desej´aveis para os Algoritmos de convers˜ao Matricial de Segmentos
      • 3.2.2 Crit´erio Adotado
      • 3.2.3 Algoritmos
      • 3.2.4 Algoritmo do “Ponto-M´edio”
    • 3.3 Convers˜ao Matricial de Circunferˆencias
      • 3.3.1 Simetria de ordem
      • 3.3.2 Algoritmo do “Ponto-M´edio” para Circunferˆencias
    • 3.4 Convers˜ao Matricial de Elipses
    • 3.5 Corre¸c˜ao no Tra¸cado
    • 3.6 Antialising
      • 3.6.1 Amostragem de Areas n˜´ ao Ponderada
  • 4 Preenchimento de Pol´ıgonos
    • 4.1 Retˆangulos
    • 4.2 Pol´ıgonos de Forma Arbitr´aria
      • 4.2.1 Arestas Horizontais
      • 4.2.2 Slivers
        • de Arestas” de um Pol´ıgono 4.2.3 Algoritmo para Convers˜ao Matricial de Segmento de Reta que Utiliza “Coerˆencia
  • 5 Transforma¸c˜oes 2D e 3D
    • 5.1 Transforma¸c˜oes em 2D
    • 5.2 Coordenadas Homogˆeneas e Matrizes de Transforma¸c˜ao
    • 5.3 Transforma¸c˜oes 2D Adicionais: Espelhamento e Shearing
      • 5.3.1 Espelhamento (Mirror)
      • 5.3.2 Shearing
    • 5.4 Transforma¸c˜oes entre sistemas de coordenadas
    • 5.5 Composi¸c˜ao de Transforma¸c˜oes
    • 5.6 Transforma¸c˜ao Janela - Porta de Vis˜ao (“Window-to-Viewport”)
    • 5.7 Eficiˆencia
    • 5.8 Transforma¸c˜oes em 3D
      • 5.8.1 Composi¸c˜ao de Transforma¸c˜oes em 3D
  • 6 Observa¸c˜ao de Cenas 3D
    • 6.1 Pipeline de observa¸c˜ao (“viewing pipeline”)
    • 6.2 Coordenadas de Observa¸c˜ao
      • 6.2.1 Especifica¸c˜ao do sistema de coordenadas de observa¸c˜ao
        • de observa¸c˜ao 6.2.2 Transforma¸c˜ao do sistema de coordenadas do mundo para o sistema de coordenadas
    • 6.3 Proje¸c˜oes
      • 6.3.1 Proje¸c˜ao Perspectiva
      • 6.3.2 Desenvolvimento Matem´atico para Proje¸c˜oes Paralelas
  • 7 Recorte de Primitivas 2D
    • 7.1 Recorte de segmentos de reta
      • 7.1.1 Recorte de Pontos Extremos
      • 7.1.2 Algoritmo de Cohen-Sutherland para Recorte de Segmentos de Reta
    • 7.2 Recorte de Circunferˆencias
  • 8 Curvas e Superf´ıcies em Computa¸c˜ao Gr´afica
    • 8.1 Representa¸c˜ao de Curvas
    • 8.2 Curve Fitting x Curve Fairing
      • 8.2.1 Ajuste de curvas (curve fitting)
      • 8.2.2 Aproxima¸c˜ao de curvas (curve fairing)
    • 8.3 Representa¸c˜oes Param´etricas e N˜ao Param´etricas (expl´ıcita e impl´ıcita)
      • 8.3.1 Limita¸c˜oes das representa¸c˜oes n˜ao param´etricas
    • 8.4 Curvas de B´ezier
  • 9 Apostila Modelagem
  • 10 Rendering
  • 11 Cores e Sistemas de Cores
    • 11.1 Percep¸c˜ao de Cor
    • 11.2 Sistemas de Cores Prim´arias
    • 11.3 Modelo XYZ
    • 11.4 Modelo RGB (Red, Green, Blue)
    • 11.5 Modelo HSV (Hue, Saturation, Value)
    • 11.6 Modelo HLS (Hue, Lightness, Saturation)
  • 12 Processamento Digital de Imagens
    • 12.1 Introdu¸c˜ao
    • 12.2 Considera¸c˜oes Sobre Imagens
    • 12.3 Tabelas “Look-up”
    • 12.4 Tipos de Manipula¸c˜ao de Imagens
    • 12.5 Transforma¸c˜oes Radiom´etricas
      • 12.5.1 Opera¸c˜oes Pontuais sobre Imagens
      • 12.5.2 Opera¸c˜oes Locais Sobre a Imagem
  • Bibliografia
  • A Hist´orico
  • 1.1 Relacionamento entre as 3 sub´areas da Computa¸c˜ao Gr´afica. Lista de Figuras
  • 1.2 Esquema b´asico de um hardware de computa¸c˜ao gr´afica.
  • 1.3 Sistemas de coordenadas e suas transforma¸c˜oes.
  • 2.1 Estrutura interna de um CRT.
  • 2.2 Convers˜ao Digital-Anal´ogica para Visualiza¸c˜ao num CRT.
    • na tela. 2.3 Uma seq¨uˆencia de bits na mem´oria de imagem ´e convertida para uma seq¨uˆencia de pixels
  • 2.4 Representa¸c˜ao esquem´atica de uma imagem matricial e sua representa¸c˜ao num frame buffer.
  • 2.5 Varredura por rastreio fixo.
  • 2.6 Representa¸c˜ao esquem´atica de um CRT por varredura colorido.
  • 2.7 Organiza¸c˜ao de uma v´ıdeo look-up table.
  • 3.1 Representa¸c˜ao de segmentos de reta horizontais, verticais e diagonais.
  • 3.2 Reflex˜ao de uma imagem com rela¸c˜ao a um eixo diagonal.
  • 3.3 Rota¸c˜ao de 90o obtida atrav´es de 2 reflex˜oes, uma horizontal (a) e outra na diagonal (b).
  • 3.4 Convers˜oes matriciais de um segmento de reta resultante de diferentes crit´erios.
  • 3.5 Imagens de segmentos de reta convertidos pelo crit´erio expl´ıcito acima.
  • 3.6 Grade de pixels para o Algoritimo o Ponto-M´edio (M) e as escolhas E e NE.
  • 3.7 Grade de pixels para o Algoritimo o Ponto-M´edio (M) e as escolhas E e NE.
    • lando e arrendondando y. 3.8 Um arco de 14 de circunferˆencia, obtido variando-se x em incrementos unit´arios, e calcu-
  • 3.9 Oito pontos sim´etricos em uma circunferˆencia.
    • entre os pixels E e SE. 3.10 Malha de pixels para o Algoritmo do Ponto-M´edio para circunferˆencias, ilustrando a escolha
    • octante gerado por simetria. 3.11 Segundo octante da circunferˆencia gerado com o algor´ıtimo do Ponto-M´edio e primeiro
  • 3.12 Elipse padr˜ao centrada na origem.
  • 3.13 As duas regi˜oe adotadas, definidas pela tangente a 45o.
    • ´e uma aplia¸c˜ao da regi˜ao central de (b). 3.14 Segmento de reta renderizado com o algor´ıtmo do ponto m´edio em diferentes escalas. (a)
  • 3.15 Segmento de reta definido com uma espessura diferente de zero.
  • 3.16 A intensidade do pixel ´e proporcional `a area coberta.
  • 3.17 Filtro definido por um cubo para um pixel definido por um quadrado.
  • 3.18 Filtro cˆonico com diˆametro igual ao dobro da largura de um pixel.
    • enquanto as intersec¸c˜oes com os lados EF e DE possuem coordenadas reais. intersec¸c˜oes da linha de varredura 8 com os lados FA e CD possuem coordenadas inteiras,
    • pol´ıgno. cinza. (a) Extremo calculado pelo algoritmo do ”Meio-Ponto”. (b) Extremo interior ao
  • 4.3 Tratamento dos lados horizontais de um pol´ıgono.
  • 4.4 Exemplo de uma convers˜ao matricial de um Sliver
  • 4.5 ET para o pol´ıgono de Figura 4.1.
    • que a coordenada x da aresta DE em (b) foi arredondada para cima.. 4.6 AET para o pol´ıgono da Figura 4.1 a) linha de varredura 9 b) linha de varredura 10. Note
  • 5.1 Transla¸c˜ao de uma casa.
  • 5.2 Mudan¸ca de escala de uma casa. Como a escala ´e n˜ao uniforme, sua propor¸c˜ao ´e alterada.
    • tamb´em ´e feita em rela¸c˜ao a origem. 5.3 Esta figura mostra a rota¸c˜ao da casa por 45◦. Da mesma forma que para a escala, a rota¸c˜ao
  • 5.4 Derivando a equa¸c˜ao de rota¸c˜ao.
    • projetado sobre o plano W = 1. 5.5 O espa¸co de Coordenadas Homogˆeneas XY W , com o plano W = 1 e o ponto P (X, Y, W )
    • se dessa forma uma transforma¸c˜ao afim. 5.6 Um cubo unit´ario ´e rodados 45 graus, posteriormente escalado n˜ao uniformemente. Obtem-
  • 5.7 Reflex˜ao de um objeto em torno do eixo x.
  • 5.8 Reflex˜ao de um objeto em torno de um eixo perpendicular ao plano xy, passando pela origem.
  • 5.9 Rota¸c˜ao em rela¸c˜ao ao Ponto P 1, por um ˆangulo θ.
  • 5.10 Escala e rota¸c˜ao de uma casa em rela¸c˜ao ao ponto P
  • 5.11 Janela em Coordenadas do mundo e porta de vis˜ao em coordenadas de tela.
  • 5.12 Duas portas de vis˜ao associadas a mesma janela.
  • 5.13 Os passos da transforma¸c˜ao janela - porta de vis˜ao.
    • interior ´e apresentado na tela (viewport). 5.14 Primitivas gr´aficas de sa´ıda em coordenadas do mundo s˜ao recortadas pela janela. O seu
  • 5.15 Sistema de Coordenadas dado pela Regra da M˜ao Direita.
  • 5.16 Transformando P 1 , P 2 e P 3 da posi¸c˜ao inicial em (a) para a posi¸c˜ao final em (b).
  • 5.17 Rota¸c˜ao dos pontos P 1 , P 2 e P
    • eixo z, pelo ˆangulo positivo f. 5.18 Rota¸c˜ao em rela¸c˜ao ao eixo x. P1 e P2 de comprimento D2 ´e rotacionado em dire¸c˜ao ao
  • 5.19 Rota¸c˜ao em rela¸c˜ao ao eixo z.
  • 5.20 Os vetores unit´arios Rx, Ry e Rz , os quais s˜ao transformados nos eixos principais.
  • 6.1 Atributos da cˆamera [Schr¨oeder, 1998].
  • 6.2 Movimentos de cˆamera [Schr¨oeder, 1998].
  • 6.3 Movimentos de cˆamera [Schr¨oeder, 1998].
    • nadas do mundo [Hearn and Baker, 1994]. 6.4 Um VCS baseado na regra da m˜ao direita com xv , yv e zv .relativos ao sistema de coorde-
    • enta¸c˜ao em (a) e (1, 0 , 1), a orienta¸c˜ao em (b) [Hearn and Baker, 1994]. 6.5 Orienta¸c˜oes do plano de observa¸c˜ao conforme o vetor normal. O vetor (1, 0 , 0) d´a a ori-
  • 6.6 Taxomia de proje¸c˜oes [Plastock and Kalley, 1999].
  • 6.7 Linha AB e sua proje¸c˜ao A’B’: (a) perspectiva; (b) ortogonal.
    • tando o ponto de fuga. 6.8 Proje¸c˜oes de um cubo (com 1 ponto de fuga) sobre um plano cortando o eixo Z, apresen-
    • z)). 6.9 Proje¸c˜oes perspectivas com 2 pontos de fuga ( o plano de proje¸c˜ao intercepta 2 eixos (x e
  • 6.10 Proje¸c˜oes perspectivas com 3 pontos de fuga ( o plano de proje¸c˜ao intercepta os 3 eixos).
    • quando projetadas no plano de vis˜ao. 6.11 A esfera B ´e bem maior que a esfera A, por´em ambas aparecem com o mesmo tamanho
  • 6.12 Confus˜ao visual da perpectiva (objeto atr´as do centro de proje¸c˜ao).
    • de proje¸c˜ao [Hearn and Baker, 1994]. 6.13 Proje¸c˜ao em perspectiva de um ponto P=(x, y, z) na posi¸c˜ao (xp, yp, zp) sobre o plano
  • 6.14 Proje¸c˜ao ortogonal de um ponto no plano de proje¸c˜ao [Hearn and Baker, 1994].
  • 7.1 Exemplos de recorte de segmentos de reta.
  • 7.2 C´odigos das regi˜oes.
  • 7.3 Funcionamento do algoritmo de Cohen-Sutherland para recorte de segmentos.
  • 7.4 Algoritmo de Sutherland-Hodgman para Recorte de Pol´ıgonos.
    • cˆoncavo com muitas arestas exteriores. 7.5 Exemptos de recorte de pol´ıgonos. (a) M´ultiplos componentes. (b) Caso convexo (c) Caso
  • 7.6 Quatro situa¸c˜oes poss´ıveis no recorte de pol´ıgonos.
  • 8.1 Representa¸c˜ao de superf´ıcies atrav´es de malhas.
  • 8.2 Aproxima¸c˜ao de curvas por segmentos de reta conectados.
  • 8.3 Aproxima¸c˜ao de curvas por segmentos de reta conectados.
  • 8.4 Pontos de uma circunferˆencia.
  • 8.5 Representa¸c˜ao de uma curva de B´ezier definida pelos pontos B 0 , B 1 , B 2 e B
  • 8.6 Fun¸c˜oes de blending para v´arios valores de n.
  • 11.1 Espectro eletromagn´etico [Gro94].
  • 11.2 Ilustra¸c˜ao da mistura de cores aditivas [For94].
  • 11.3 Ilustra¸c˜ao da mistura de cores subtrativas [For94].
  • 11.4 Ilustra¸c˜ao da obten¸c˜ao de tints, shades e tones.
  • 11.5 Diagrama de cromaticidade do CIE [Hea94].
  • 11.6 Representa¸c˜ao de escalas de cor no diagrama de cromaticidade do CIE [Hea94].
  • 11.7 Cubo do RGB [Fol96].
  • 11.8 Cone hexagonal do HSV [Fol96].
  • 11.9 Cone duplo do HLS [Fol96].
  • 12.1 Efeitos sobre uma imagem, de se reduzir o tamanho da grade de amostragem.
  • 12.2 Uma imagem de 512 x 512 pixels, quantizada em (a) 256 n´ıveis, (b) 128 n´ıveis, (c)
    • 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.
  • 12.3 Representa¸c˜ao de um pixel P com 8-bits (8 planos) de profundidade.
  • 12.4 Organiza¸c˜ao de uma LUT, para um sistema de pixels de 8 bits.
  • 12.5 Imagens e histogramas de intensidade.
  • 12.6 Efeito de uma transforma¸c˜ao dos n´ıveis de cinza efetuado sobre o histograma.
  • 12.7 Manipula¸c˜ao de janelas de intensidade da imagem atrav´es do histograma.
  • 12.8 Sinais “ru´ıdo” (a) e “degrau” (b).
  • 12.9 Sinais “ru´ıdo” (a) e “degrau” (b).
    • da borda; (c) amplia¸c˜ao do ru´ıdo; (d) realce da borda. 12.10Efeitos de filtros lineares ao “ru´ıdo” e `a “borda”: (a) efeitos de atenua¸c˜ao; (b) borramento
  • 12.11Efeito do filtro da mediana sobre o “ru´ıdo” e o “degrau”.
  • 12.12Uma transforma¸c˜ao geom´etrica de 90ograus.

outras. Nelas, o que existe em comum ´e que a representa¸c˜ao gr´afica (superf´ıcies, part´ıculas, ´ıcones) s˜ao geradas automaticamente a partir do conjunto de dados. Ao usu´ario cabe definir parˆametros e atributos da imagem para melhor “navegar” seu conjunto de dados. Dessa maneira, a visualiza¸c˜ao de dados partilha de caracter´ısticas da s´ıntese, do processamento e da an´alise de dados. Atualmente a Computa¸c˜ao Gr´afica ´e altamente interativa: o usu´ario controla o conte´udo, a estrutura e a aparˆencia dos objetos e suas imagens visualizadas na tela, usando dispositivos como o teclado e o mouse. Entretanto, at´e o in´ıcio dos anos 80, a computa¸c˜ao gr´afica era uma disciplina restrita e alta- mente especializada. Devido principalmente ao alto custo do hardware, poucos programas aplicativos exploravam gr´aficos. O advento dos computadores pessoais de baixo custo, como o IBM-PC e o Apple Macintosh, com terminais gr´aficos de varredura (raster graphics displays), popularizou o uso de gr´aficos na intera¸c˜ao usu´ario-computador. Os displays gr´aficos de baixo custo possibilitaram o desenvolvimento de in´umeros aplicativos baratos e f´aceis de usar, que dispunham de interfaces gr´aficas - planilhas, processadores de texto, programas de desenho... As interfaces evoluiram e introduziu-se o conceito de desktop - uma met´afora para uma mesa de trabalho. Nessas interfaces gr´aficas, atrav´es de um gerenciador de janelas (window manager ) o usu´ario pode criar e posicionar janelas que atuam como terminais virtuais, cada qual executando aplicativos in- dependentemente. Isso permite que o usu´ario execute v´arios aplicativos simultaneamente, e selecione um deles a um simples toque no mouse. ´Icones (icons) s˜ao usados para representar arquivos de dados, progra- mas e abstra¸c˜oes de objetos de um escrit´orio - como arquivos, caixas de correio (mailboxes), impressoras, latas de lixo - nas quais s˜ao executadas opera¸c˜oes an´alogas `as da vida real. Para ativar os programas, o usu´ario pode selecionar ´ıcones, ou usar buttons e menus dinˆamicos. Objetos s˜ao manipulados diretamente atrav´es de opera¸c˜oes de pointing e clicking feitas com o mouse. Atualmente, mesmo aplicativos que ma- nipulam texto (como processadores de texto) ou dados num´ericos (como planilhas) usam interfaces desse tipo, reduzindo sensivelmente a intera¸c˜ao textual por meio de teclados alfanum´ericos. A computa¸c˜ao gr´afica n˜ao ´e mais uma raridade: ´e parte essencial de qualquer interface com o usu´ario, ´e indispens´avel para a visualiza¸c˜ao de dados em 2D e 3D e tem aplica¸c˜oes em ´areas como educa¸c˜ao, ciˆencias, engenharia, medicina, publicidade, lazer, militar, ... A computa¸c˜ao gr´afica trata da s´ıntese de imagens de objetos reais ou imagin´arios a partir de modelos computacionais. Processamento de imagens ´e uma ´area relacionada que trata do processo inverso: a an´alise de cenas, ou a reconstru¸c˜ao de modelos de objetos 2D ou 3D a partir de suas imagens. Note que a s´ıntese de imagens parte da descri¸c˜ao de objetos tais como segmentos de reta, pol´ıgonos, poliedros, esferas, etc.; e produz uma imagem que atende a certas especifica¸c˜oes e que pode, em ´ultima instˆancia, ser visualizada em algum dispositivo (terminal de v´ıdeo, plotter, impressora, filme fotogr´afico...). As imagens em quest˜ao constituem uma representa¸c˜ao visual de objetos bi- ou tridimensionais descritos atrav´es de especifica¸c˜oes abstratas. O processamento de imagens parte de imagens j´a prontas para serem visualizadas, as quais s˜ao trans- feridas para o computador por mecanismos diversos - digitaliza¸c˜ao de fotos, tomadas de uma cˆamera de v´ıdeo, ou imagens de sat´elite - para serem manipuladas visando diferentes objetivos.

1.1 Sistemas Gr´aficos

A Computa¸c˜ao Gr´afica (especialmente as componentes relativas a gr´aficos 3D e a gr´aficos 3D interativos) desenvolveu-se de modo bem diverso: de simples programas gr´aficos para computadores pessoais `a pro- gramas de modelagem e de visualiza¸c˜ao em workstations e supercomputadores. Como o interesse em CG cresceu, ´e importante escrever aplica¸c˜oes que possam rodar em diferentes plataformas. Um padr˜ao para desenvolvimento de programas gr´aficos facilita esta tarefa eliminando a necessidade de escrever c´odigo para um driver gr´afico distinto para cada plataforma na qual a aplica¸c˜ao deve rodar. Para se padronizar a constru¸c˜ao de aplicativos que se utilizam de recursos gr´aficos e torn´a-los o mais independentes poss´ıvel de m´aquinas, e portanto facilmente port´aveis, foram desenvolvidos os chamados Sistemas Gr´aficos. V´arios padr˜oes tiveram sucesso integrando dom´ınios espec´ıficos. Por exemplo, a linguagem Postscript que se tornou um padr˜ao por facilitar a publica¸c˜ao de documentos est´aticos contendo gr´aficos 2D e textos. Outro exemplo ´e o sistema XWindow, que se tornou padr˜ao para o desenvolvimento de interfaces gr´aficas 2D em workstations UNIX. Um programador usa o X para obter uma janela em um display gr´afico no qual um texto ou um gr´afico 2D pode ser desenhado. A ado¸c˜ao do X pela maioria dos fabricantes de workstation significa que um ´unico programa desenvolvido em X pode ser rodado em uma variedade de workstation simplesmente recompilando o c´odigo. Outra facilidade do X ´e o uso de redes de computadores: um programa pode rodar em uma workstation e ler a entrada e ser exibido em outra workstation, mesmo de outro fabricante. Para gr´aficos 3D foram propostos v´arios padr˜oes. A primeira tentativa foi o Sistema Core - Core Graphics System - (1977 e 1979) pelos americanos. Mas a primeira especifica¸c˜ao gr´afica realmente pa-

dronizada foi o GKS - Graphical Kernel System, pela ANSI e ISO em 1985. O GKS ´e uma vers˜ao mais elaborada que o Core. O GKS suporta um conjunto de primitivas gr´aficas interrelacionadas, tais como: desenho de linhas, pol´ıgonos, caracteres, etc., bem como seus atributos. Mas n˜ao suporta agrupamentos de primitivas hier´arquicas de estruturas 3D. Um sistema relativamente famoso ´e PHIGS (Programmer’s Hierarchical Interactive Graphics System). Baseado no GKS, PHIGS ´e um padr˜ao ANSI. PHIGS (e seu descendente, PHIGS+) provˆeem meios para manipular e desenhar objetos 3D encapsulando descri¸c˜oes de objetos e atributos em uma display list. A display list ´e utilizada quando o objeto ´e exibido ou manipu- lado, uma vantagem ´e a possibilidade de descrever um objeto complexo uma ´unica vez mesmo exibindo-o v´arias vezes. Isto ´e especialmente importante se o objeto a ser exibido deve ser transmitido por uma rede de computadores. Uma desvantagem da display list ´e a necessidade de um esfor¸co consider´avel para reespecificar um objeto que est´a sendo modelado interativamente pelo usu´ario. Uma desvantagem do PHIGS e PHIGS+ (e GKS) ´e que eles n˜ao tˆem suporte a recursos avan¸cados como mapeamento de textura. O XWindow ganhou uma extens˜ao para o PHIGS, conhecida como PEX, de modo que o X pudesse manipular e desenhar objetos 3D. Entre outras extens˜oes, PEX soma-se de modo imediato ao PHIGS, assim um objeto pode ser exibido durante a sua defini¸c˜ao sem a necessidade da display list. O PEX tamb´em n˜ao suporta recursos avan¸cados e s´o est´a dispon´ıvel aos usu´arios do XWindow. O sistema gr´afico mais popular atualmente ´e o OpenGL (GL - Graphics Library) que provˆe carac- ter´ısticas avan¸cadas e pode ser utilizado em modo imediato ou com display list. OpenGL ´e um padr˜ao relativamente novo (sua primeira vers˜ao ´e de 1992) e ´e baseado na biblioteca GL das workstations IRIS da Silicon Graphics. Atualmente um cons´orcio de ind´ustrias ´e respons´avel pela gerenciamento da evolu¸c˜ao do OpenGL. Existe uma implementa¸c˜ao livre (c´odigo fonte dispon´ıvel) do OpenGL conhecida com MesaGL ou Mesa3D. Como os outros sistemas gr´aficos, OpenGL oferece uma interface entre o software e o hardware gr´afico. A interface consiste em um conjunto de procedimentos e fun¸c˜oes que permitem a um programador es- pecificar os objetos e as opera¸c˜oes que os envolvem produzindo imagens de alta qualidade. Como o PEX, o OpenGL integra/permite a manipula¸c˜ao de objetos (desenhos) 3D ao X, mas tamb´em pode ser integrado em outros sistemas de janela (por exemplo, Windows/NT) ou pode ser usado sem um sistema de janela. OpenGL provˆe controle direto sobre opera¸c˜oes gr´aficas fundamentais em 3D e 2D, incluindo a especifica¸c˜ao de parˆametros como matrizes de transforma¸c˜ao e coeficientes de ilumina¸c˜ao, m´etodos de antialiasing e opera¸c˜oes sobre pixels, mas n˜ao provˆe mecanismos para descrever ou modelar objetos geom´etricos complexos.

1.2 Aplica¸c˜oes da CG

A lista de aplica¸c˜oes ´e enorme, e cresce rapidamente. Uma amostra significativa inclui:

  • Interfaces: a maioria dos aplicativos para computadores pessoais e esta¸c˜oes de trabalho atualmente disp˜oem de interfaces gr´aficas baseadas em janelas, menus dinˆamicos, ´ıcones, etc.
  • Tra¸cado interativo de gr´aficos: aplicativos voltados para usu´arios em ciˆencia, tecnologia e neg´ocios geram gr´aficos que ajudam na tomada de decis˜oes, esclarecem fenˆomenos complexos e representam conjuntos de dados de forma clara e concisa.
  • Automa¸c˜ao de escrit´orios e editora¸c˜ao eletrˆonica: o uso de gr´aficos na dissemina¸c˜ao de informa¸c˜oes cresceu muito depois do surgimento de software para editora¸c˜ao eletrˆonica em com- putadores pessoais. Este tipo de software permite a cria¸c˜ao de documentos que combinam texto, tabelas e gr´aficos - os quais tanto podem ser “desenhados” pelo usu´ario ou obtidos a partir de imagens digitalizadas.
  • Projeto e desenho auxiliado por computador: em CAD, sistemas gr´aficos interativos s˜ao utilizados para projetar componentes, pe¸cas e sistemas de dispositivos mecˆanicos, el´etricos, eletro- mecˆanicos e eletrˆonicos. Isto inclui edif´ıcios, carca¸cas de autom´oveis, avi˜oes e navios, chips VLSI, sistemas ´oticos, redes telefˆonicas e de computador. Eventualmente, o usu´ario deseja apenas produzir desenhos precisos de componentes e pe¸cas. Mais frequentemente, o objetivo ´e interagir com um modelo computacional do componente ou sistema sendo projetado, de forma a testar propriedades estruturais, el´etricas ou t´ermicas, at´e atingir um projeto satisfat´orio.
  • Simula¸c˜ao e anima¸c˜ao para visualiza¸c˜ao cient´ıfica, lazer, arte e publicidade: uma das ´areas que mais evoluiram na d´ecada de 80 foi a visualiza¸c˜ao cient´ıfica. Cientistas e engenheiros perceberam que n˜ao poderiam interpretar as quantidades prodigiosas de dados produzidas por pro- gramas em supercomputadores sem resumir os dados e identificar tendˆencias e fenˆomenos atrav´es

Figura 1.2: Esquema b´asico de um hardware de computa¸c˜ao gr´afica.

  1. height - a altura do retˆangulo de visualiza¸c˜ao em mm.

A partir desses 4 parˆametros, v´arios n´umeros interessantes podem ser calculados:

  1. resolu¸c˜ao horizontal: horiz res = (^) widthndh
  2. tamanho ponto horizontal: horiz dot size = widthndh
  3. resolu¸c˜ao vertical: vert res = (^) heightndv
  4. tamanho ponto vertical: vert dot size = heightndv
  5. total pontos endere¸c´aveis: total nr dots = ndh.ndv
  6. resolu¸c˜ao de ´area: area res = (^) (total nr dotswidth.height)
  7. raz˜ao de aspecto gr´afica: aspect ratio = (^) horiz dot sizevert dot size
  8. raz˜ao de aspecto f´ısica: physical aspect ratio = heightwidth

Note que horiz res, vert res e area res definem resolu¸c˜oes f´ısicas, enquanto que ndh, ndv e total nr dots definem resolu¸c˜oes gr´aficas. Dispositivos de visualiza¸c˜ao podem ter a mesma resolu¸c˜ao gr´afica, com re- solu¸c˜oes f´ısicas muito diferentes. O ideal seria ter um aspect ratio igual ou pr´oximo de 1.

1.5 Sistemas de Coordenadas

Na CG ´e necess´ario definir sistemas de coordenadas para quantificar os dados que est˜ao

sendo manipulados. J´a vimos que os dispositivos de visualiza¸c˜ao gr´afica matriciais consistem de uma matriz de pixels endere¸c´aveis, e um gr´afico ´e formado “acendendo” ou “apagando” um pixel. Os pixels s˜ao endere¸cados por dois n´umeros inteiros que d˜ao suas coordenadas horizontal e vertical, dcx, e dcy, respectivamente, onde:

0 ≤ dcx ≤ ndhm 1 ≡ ndh − 1 (1.1) 0 ≤ dcy ≤ ndvm 1 ≡ ndv − 1 (1.2) Na matriz de pixels, o valor dcx + 1 d´a o n´umero da coluna, e dcy + 1 d´a o n´umero da linha do pixel endere¸cado. O pixel endere¸cado como (0, 0) est´a geralmente no canto inferior esquerdo do retˆangulo de visualiza¸c˜ao. As coordenadas (dcx, dcy) s˜ao chamadas de coordenadas do dispositivo, e podem assumir apenas valores inteiros. Coordenadas do dispositivo podem variar bastante para diferentes equipamentos, o que levou `a utiliza¸c˜ao de coordenadas normalizadas do dispositivo (NDC - normalized device coor- dinates), para efeito de padroniza¸c˜ao (ndcx, ndcy). NDCs s˜ao vari´aveis reais, geralmente definidas no intervalo de 0 a 1:

0 ≤ ndcx ≤ 1 (1.3)

0 ≤ ndcy ≤ 1 (1.4) A coordenada NDC (0, 0) corresponde `a origem (0, 0) nas coordenadas do dispositivo, e a coordenada NDC (1, 1) refere-se ao pixel no canto superior direito, que corresponde ao pixel (ndhm 1 , ndvm1) nas coordenadas do dispositivo. A vantagem da utiliza¸c˜ao de NDCs ´e que padr˜oes gr´aficos podem ser discuti- dos usando um sistema de coordenadas independente de dispositivos gr´aficos espec´ıficos. Obviamente, os dados gr´aficos precisam ser transformados do sistema de coordenadas independente para o sistema de co- ordenadas do dispositivo no momento de visualiza¸c˜ao. O mapeamento de NDCs (reais) para coordenadas do dispositivo (inteiros) ´e “linear”, por exemplo:

dcx = round(ndcx.ndhm1) (1.5) dcy = round(ndcy.ndvm1) (1.6) Dois outros sistemas de coordenadas s˜ao ´uteis. O primeiro ´e o sistema de cordenadas f´ısico, (pcx, pcy) onde pcx ´e a distˆancia f´ısica ao longo do eixo x a partir do extremo esquerdo do retˆangulo de visualiza¸c˜ao, e pcy ´e a distˆancia f´ısica ao longo do eixo y a partir do extremo inferior. As unidades de medida utilizadas s˜ao polegadas ou mil´ımetros. A transforma¸c˜ao de coordenadas f´ısicas para coordenadas do dispositivo ´e dada por:

dcx = trunc(ndhm 1

pcx width

dcy = trunc(ndvm 1

pcy height

O segundo ´e o sistema de coordenadas do mundo, ou sistema de coordenadas do usu´ario, que consiste de coordenadas cartesianas (x, y), num intervalo qualquer definido pelo usu´ario:

xmin ≤ x ≤ xmax (1.9) ymin ≤ y ≤ ymax (1.10) Os parˆametros que definem o intervalo de valores de x e y, xmin, ymin, xmax e ymax, definem uma ´area retangular no espa¸co bidimensional, denominada de janela. A transforma¸c˜ao de coordenadas do usu´ario (x, y) para NDCs (ndcx, ndcy), denominada transforma¸c˜ao de visualiza¸c˜ao, ´e dada por:

ndcx = x − xmin xmax − xmin

ndcy = y − ymin ymax − ymin

Para visualizar dados num dispositivo gr´afico qualquer, ´e necess´ario transform´a-los das coordenadas do usu´ario para NDCs, e de NDCs para coordenadas do dispositivo. Da mesma forma, dados de entrada gr´aficos precisam ser transformados de coordenadas do dispositivo para NDCs, e depois para coordenadas do usu´ario (Figura 1.3).

Figura 1.3: Sistemas de coordenadas e suas transforma¸c˜oes.

Cap´ıtulo 2

Dispositivos de Visualiza¸c˜ao

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

2.1 Dispositivos Gr´aficos Vetoriais

2.1.1 Tra¸cadores Digitais

Tra¸cadores (plotters) s˜ao dispositivos eletromecˆanicos que produzem o desenho pelo movimento de uma caneta sobre a superf´ıcie do papel. A primitiva gr´afica b´asica nesse tipo de dispositivo ´e o segmento de reta. Arcos, curvas e caracteres s˜ao produzidos pelo tra¸cado de uma s´erie de pequenos segmentos. Nos tra¸cadores de mesa, o papel ´e fixado sobre uma superf´ıcie plana retangular, sobre a qual est´a lo- calizado um bra¸co mecˆanico que movimenta-se por transla¸c˜ao. Ao longo do bra¸co desloca-se um cabe¸cote que suporta uma caneta perpendicularmente `a mesa, a qual pode ser pressionada contra o papel ou levantada de forma a n˜ao toc´a-lo. Nos tra¸cadores de rolo, o bra¸co ´e fixo, e o papel ´e movimentado para frente e para tr´as por a¸c˜ao de um rolo, como em uma m´aquina de escrever. Embora distintos em constru¸c˜ao, estes dois tipos de tra¸cadores possuem caracter´ısticas de pro- grama¸c˜ao e controle similares. A posic˜ao da caneta sobre o papel ´e definida pelo posicionamento do bra¸co em rela¸c˜ao ao papel (abcissa x), e do cabe¸cote sobre o bra¸co (ordenada y). Figuras s˜ao tra¸cadas pela varia¸c˜ao controlada da posi¸c˜ao da caneta (abcissa e ordenada) e pelo controle do estado da caneta (abaixada ou levantada). O tra¸cador ´e em geral controlado por um processador dedicado que recebe instru¸c˜oes diretamente do computador ou de um arquivo que descreve o desenho.

2.1.2 Dispositivos de V´ıdeo Vetoriais (Vector Refresh Display Tubes)

No in´ıcio da CG, o principal dispositivo de v´ıdeo n˜ao era um monitor parecido com uma TV, e sim um car´ıssimo CRT (Cathode Ray Tube) do tipo usado em oscilosc´opios. Como o display dos oscilosc´opios, os monitores tinham como entradas duas voltagens, x e y, que direcionavam um feixe de el´etrons para um ponto espec´ıfico da tela. O feixe tra¸cava uma linha do ´ultimo ponto para o corrente, num ´unico movimento vetorial. Um CRT consiste basicamente de uma superf´ıcie de exibi¸c˜ao, quase plana, recoberta internamente de material `a base de f´osforo, um canh˜ao emissor de el´etrons e um sistema de deflex˜ao (Figura 2.1). O canh˜ao emite um fino feixe de el´etrons que, acelerados, chocam-se contra a superf´ıcie fosforecente da tela. Sob a a¸c˜ao dos el´etrons, o material fosforecente incandesce, emitindo luz no ponto da tela atingido pelo

Figura 2.1: Estrutura interna de um CRT.

feixe. A fun¸c˜ao do sistema de deflex˜ao ´e dirigir controladamente o feixe de el´etrons para um determinado ponto da tela. O brilho do f´osforo dura apenas alguns milisegundos (a emiss˜ao de luz pelo f´osforo n˜ao ´e est´avel, e cai a zero logo ap´os a interrup¸c˜ao do bombardeio de el´etrons), de forma que toda a figura precisa ser continuamente retra¸cada para que o gr´afico permane¸ca na tela. Este processo ´e denominado refreshing (da´ı o nome, vector refreshing tubes). Se a imagem sendo mostrada ´e composta por muitos vetores, vai haver um atraso significativo entre o tra¸cado do primeiro e do ´ultimo vetores, e alguns do vetores tra¸cados inicialmente podem desaparecer nesse per´ıodo. O resultado ´e que o tubo n˜ao consegue retra¸car a imagem de modo suficientemente r´apido para evitar que um efeito de flickering (“cintila¸c˜ao”) torne-se aparente na tela.

Figura 2.2: Convers˜ao Digital-Anal´ogica para Visualiza¸c˜ao num CRT.

O tubo n˜ao exige muita mem´oria para manter uma imagem complexa constru´ıda por segmentos de 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´ıcio da CG, j´a que a mem´oria era muito cara. O computador gera as coordenadas dos pontos que definem a figura a ser mostrada na tela, e um DAC (conversor digital-anal´ogico) ´e necess´ario para converter os pontos digitais em voltagens a serem enviadas para o CRT (Figura 2.2). As desvantagens dos terminais gr´aficos vetoriais eram: a tecnologia cara, o efeito de flickering, e a mem´oria limitada, que inviabilizava a descri¸c˜ao de imagens com detalhes complexos. As vantagens: dispositivo gr´afico de alta resolu¸c˜ao (pelo menos 1000x1000), rapidez na gera¸c˜ao de imagens simples, o que os torna adequados para testes iniciais em anima¸c˜ao.

densidade de impress˜ao, e algumas impressoras disp˜oem de v´arios bicos com tintas de cores diferentes, cuja mistura produz diversas tonalidades. Nas impressoras a laser, o processo de impress˜ao ´e semelhante ao das copiadoras eletrost´aticas. Um feixe de raio laser varre uma chapa numa trajet´oria semelhante ao de um cabe¸cote de uma impressora. O bombardeio do feixe deixa a chapa carregada com uma carga eletrost´atica n˜ao uniforme. Por efeito da intensidade da carga, uma tintura (tonner ) adere a chapa e por press˜ao ´e impregnada no papel, formando a imagem. Apesar de utilizarem tecnologias distintas, estas impressoras produzem imagens de natureza seme- lhante (mas com qualidade superior)as geradas pelas impressoras matriciais em modo gr´afico. As imagens s˜ao, em ´ultima instˆancia, constitu´ıdas de min´usculos pontos regularmente espa¸cados.

2.3.2 Dispositivos de V´ıdeo de Varredura (Raster Scanning VDUs)

A tecnologia utilizada atualmente na grande maioria dos terminais de v´ıdeo gr´aficos ´e a mesma dos aparelhos de TV. Um terminal gr´afico simples requer (Figura 2.3):

Figura 2.3: Uma seq¨uˆencia de bits na mem´oria de imagem ´e convertida para uma seq¨uˆencia de pixels na tela.

Figura 2.4: Representa¸c˜ao esquem´atica de uma imagem matricial e sua representa¸c˜ao num frame buffer.

  1. uma mem´oria digital (frame buffer, ou “mem´oria de imagem”), na qual a imagem a ser visualizada ´e armazenada como uma matriz de pixels (cada posi¸c˜ao na matriz cont´em a intensidade associada ao pixel correspondente na tela) (Figura 2.4). Os dados da imagem s˜ao colocados no frame buffer pelo computador hospedeiro.
  2. o monitor
  3. um controlador de v´ıdeo (display controller ), que consiste de uma interface que transfere o conte´udo do frame buffer para o monitor. Os dados devem ser transferidos repetidamente, pelo menos 15 vezes por segundo, de modo a manter uma imagem est´avel na tela, reduzindo o flickering. Note que processo de transferˆencia implica numa convers˜ao digital-anal´ogica (DAC).

Para gerar a imagem, utiliza-se a t´ecnica conhecida como raster scanning (“varredura”, ou “rastreio”), que ´e a mesma utilizada na gera¸c˜ao de imagens de TV. Essa t´ecnica tamb´em utiliza um CRT, sendo que

Figura 2.5: Varredura por rastreio fixo.

o feixe de el´etrons varre a tela muitas vezes por segundo, de acordo com uma trajet´oria fixa (Figura 2.5). O feixe movimenta-se da esquerda para a direita, na horizontal. Ao final de uma varredura horizontal, o feixe (com intensidade anulada) ´e reposicionado no in´ıcio da linha imediatamente abaixo, para nova varredura. Para garantir o “refrescamento” da imagem, o feixe ´e redirecionado ao ponto inicial da primeira linha sempre que atingir o final da tela. Note que a intensidade do feixe num determinado pixel ´e determinada pelo valor associado ao pixel no frame buffer. Se a mem´oria consiste de apenas um bit por pixel, ent˜ao o pixel pode ter apenas dois estados: on ou off. Se existem oito bits por pixel, ent˜ao cada pixel pode variar entre 256 n´ıveis de intensidade, desde completamente off (preto), passando por diferentes n´ıveis de cinza, podendo chegar a completamente on (branco). A dr´astica redu¸c˜ao dos custos de mem´oria de semicondutor, e o surgimento de circuitos integrados dedicados ao controle e a gera¸c˜ao de sinais para terminais de rastreio fixo tornaram esta tecnologia extremamente competitiva. Na tecnologia de varredura, todos os pontos que comp˜oem uma imagem precisam ser armazenados, e n˜ao apenas os pontos extremos dos segmentos de reta. Consequentemente, gr´aficos de varredura requerem muito mais mem´oria. Como o pre¸co da mem´oria digital est´a sendo reduzidoa metade a cada ano que passa, a tecnologia tornou-se a alternativa mais acess´ıvel, utilizada tanto em microcomputadores como em esta¸c˜oes de trabalho gr´aficas. Al´em do custo, outras vantagens s˜ao a capacidade de representar ´areas cheias, e n˜ao somente linhas, e a possibilidade de utiliza¸c˜ao de cores ou diferentes n´ıveis de cinza.

Figura 2.6: Representa¸c˜ao esquem´atica de um CRT por varredura colorido.

Em monitores monocrom´aticos, toda a superf´ıcie da tela ´e revestida com o mesmo tipo de f´osforo, e o feixe de el´etrons pode ser direcionado para qualquer ponto da tela atrav´es das voltagens x e y. Num monitor colorido, cada pixel da tela ´e recoberto por trˆes tipos de f´osforo, que produzem as cores vermelho, verde e azul (Red, Green, Blue - RGB). Ao inv´es de um ´unico feixe de el´etrons existem trˆes, cada qual associado a uma cor de f´osforo. Entre a superf´ıcie da tela recoberta de f´osforo, e os feixes de el´etrons, est´a uma barreira de metal, denominada shadow mask ou metal mask (Figura 2.6), que, por meio de buracos em posi¸c˜oes estrat´egicas, garante que cada feixe atinge apenas o f´osforo ao qual est´a associado.