Conversão por Varrimento

Documentos relacionados
Imagem Vetorial x Imagem Matricial. Conversão Matricial de Primitivas Gráficas. Sistema de Coordenadas do Dispositivo. Problema

Desenho de Segmentos de Recta

Primitivos gráficos - algoritmos

Computação Gráfica. Rasterização. Aula 4. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro

Sumário. Traçado de Retas. Antialiasing e OpenGL. 1 Introdução. 2 Conversão Segmento de Reta. 3 Algoritmo DDA. 4 Algoritmo de Bresenham

Primitivos gráficos - algoritmos

Rasterização de primitivas 2D

Computação Gráfica - 12

Computação Gráfica Rasterização de Curvas

ALGORITMOS PARA DESENHAR RETAS E CÍRCULOS

Pipeline de Visualização 2D

Computação Gráfica. Prof. MSc André Yoshimi Kusumoto

Computação Gráfica. Prof. André Yoshimi Kusumoto

Problema. Conversão Matricial. Octantes do Sistema de Coordenadas Euclidiano. Sistema de Coordenadas do Dispositivo. Maria Cristina F.

Desenho de Segmentos de Recta

Prof. Dr. Leandro Alves Neves. Conceitos Fundamentais. Algoritmos de Conversão Matricial.

Visibilidade. Apontamentos CG + Edward Angel, Sec Instituto Superior Técnico Computação Gráfica 2009/2010

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1

Prof. Julio Arakaki. Ciência da Computação

Transformações de Visualização 2D: Clipping. Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro

Visibilidade. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 7 Apontamentos CG

Algoritmos de Rasterização e Recorte

Resolução do Exame Tipo

Introdução ao Processamento e Síntese de imagens Recorte 2D

PROPOSTA DE RESOLUÇÃO DA PROVA DE MATEMÁTICA A DO ENSINO SECUNDÁRIO (CÓDIGO DA PROVA 635) 2ª FASE 20 DE JULHO 2018 CADERNO 1

Visualização 2D: - Transformação window to viewport - Clipping

MATEMÁTICA A - 12o Ano N o s Complexos - Potências e raízes Propostas de resolução

ESCOLA BÁSICA INTEGRADA DE ANGRA DO HEROÍSMO Plano da Unidade

O problema proposto possui alguma solução? Se sim, quantas e quais são elas?

MATEMÁTICA Plano anual 2008/2009 7º Ano 1º PERÍODO. Nº de Segmentos Conhecer melhor os números 12 Proporcionalidade directa

António Costa. Paulo Roma Cavalcanti

PROPOSTA DE RESOLUÇÃO DA PROVA DE MATEMÁTICA A DO ENSINO SECUNDÁRIO (CÓDIGO DA PROVA 635) 2ª FASE 20 DE JULHO 2018 CADERNO 1

ESCOLA SECUNDÁRIA COM 3º CICLO D. DINIS COIMBRA 11º ANO DE ESCOLARIDADE MATEMÁTICA A. Ficha de revisão n.º 6

Introdução à Computação Gráfica

ESCOLA BÁSICA INTEGRADA DE ANGRA DO HEROÍSMO. Plano da Unidade

Preliminares de Cálculo

Matemática 3º Ciclo. Planificação Anual 7.º ano. N.º de aulas. Objectivos 1.º PERÍODO. Ano Lectivo 2009/2010. Apresentação 1. Teste Diagnóstico 2

Derivadas. Derivadas. ( e )

Sumário COMPUTAÇÃO GRÁFICA E INTERFACES. Modelos e modelagem. Modelos e modelagem. Transformações Geométricas e Visualização 2D

Determinação de raízes de polinômios: Método de Briot-Ruffini-Horner

Matemática Básica Relações / Funções

Geometria Analítica - Aula

Resolução das Questões Discursivas

BANCO DE EXERCÍCIOS - 24 HORAS

2º Exame. Computação Gráfica

Determinação de raízes de polinômios: Método de Briot-Ruffini-Horner

Definição: Uma função de uma variável x é uma função polinomial complexa se pudermos escrevê-la na forma n

f, da, onde R é uma das regiões mostradas na

Comprimento de Arco. 1.Introdução 2.Resolução de Exemplos 3.Função Comprimento de Arco 4.Resolução de Exemplo

DCC008 - Cálculo Numérico

Matemática I Cálculo I Unidade B - Cônicas. Profª Msc. Débora Bastos. IFRS Campus Rio Grande FURG UNIVERSIDADE FEDERAL DO RIO GRANDE

3 ano E.M. Professores Cleber Assis e Tiago Miranda

Todos os exercícios sugeridos nesta apostila se referem ao volume 3. MATEMÁTICA III 1 ESTUDO DA CIRCUNFERÊNCIA

6.1 equações canônicas de círculos e esferas

Fundamentos da Computação Gráfica Lista de Exercícios Marcelo Gattass TeCGraf/Departamento de Informática/PUC-Rio 19jun2003

Computação Gráfica. Prof. MSc. André Yoshimi Kusumoto

Capítulo 19. Coordenadas polares

Exame de Época Especial Computação Gráfica

Introdução Geral a Computação Gráfica. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina de Computação Gráfica

Funções de Uma Variável - 1 a Avaliação - Turma B3 31 de outubro de Prof. Armando Caputi

Curvas Planas em Coordenadas Polares

Título do Livro. Capítulo 5

Capítulo 12. Ângulo entre duas retas no espaço. Definição 1. O ângulo (r1, r2 ) entre duas retas r1 e r2 é assim definido:

Prof. Fernando V. Paulovich 3 de agosto de SCC Computação Gráca

MATEMÁTICA I FUNÇÕES. Profa. Dra. Amanda L. P. M. Perticarrari

MÓDULO 1 - AULA 21. Objetivos

Jorge M. V. Capela, Marisa V. Capela. Araraquara, SP

étodos uméricos ZEROS DE FUNÇÕES Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

O Problema de Visibilidade. Computação Gráfica Recorte. Onde Acontece? O que é Recorte? Renato Ferreira

Rasterização de primitivas 2D e Pipeline 2D. Soraia Raupp Musse

CÁLCULO VETORIAL E GEOMETRIA ANALÍTICA

Aula Exemplos diversos. Exemplo 1

Prova Escrita de MATEMÁTICA A - 12o Ano a Fase

FICHA de AVALIAÇÃO de MATEMÁTICA A 11.º Ano Versão 2

Dizemos que uma superfície é um cilindro se na equação cartesiana da superfície há uma variável que não aparece.

Iteração e Pontos Fixos

3.2 Determine a equação da circunferência de raio 5, tangente à reta 3x +4y =16no ponto A (4, 1).

Gráficos, Proporções e Variações Proporcionais

Aulas práticas de Álgebra Linear

MATRIZ DE REFERÊNCIA - SPAECE MATEMÁTICA 5 o ANO DO ENSINO FUNDAMENTAL TEMAS E SEUS DESCRITORES

Funções de Uma Variável - 1 a Avaliação - Turma B3 31 de outubro de Prof. Armando Caputi

Processamento digital de imagens

Matemática Computacional Ficha 1: Capítulo /19

Transcrição:

Conversão por Varrimento

Conversão vectorial? matricial Representação Vectorial Representação Matricial 2

Rasterização de Primitivas? Rasterização - converter de uma definição geométrica para pixels (matricial)? Rasterizar escolher pixels? Operação muito frequente? Deve ser eficiente!!!? Isto implica:? Utilizar aritmética de inteiros? Utilizar métodos incrementais? Utilizar somas no lugar de multiplicações 3

Conversão por varrimento do ponto? A conversão por varrimento do ponto envolve a iluminação do pixel que o contém? Ex. Os pontos em coordenadas P1(2.5, 1.2) e P2(2.8, 1.5) seriam ambos representados pelo pixel (2,1)? Em geral P(x, y)? P(int(x), int(y)) 4

Conversão por varrimento do segmento de recta? O problema 5

Conversão por varrimento do segmento de recta? O problema 6

Conversão por varrimento do segmento de recta? Método do Declive (Direct Scan Conversion)? Um segmento de recta pode ser definido por dois pontos extremos e uma equação:? Pontos? (x1, y1) e (x2, y2)? Equação? y = m*x + b (1)? onde m = y/ x, b (x1,y1) (x2,y2) y=mx+b? b = ao valor que y toma quando a recta intersecta o eixo do y. O valor de b pode ser calculado por b = y1 m*x1 Podemos determinar os valores de y incrementando o valor de x de x1 a x2 7

Conversão por varrimento do segmento de recta? Método do Declive (versão * Se m > 1, invertese x e y. 0< m <1)* versão 0< m <1 void Line1(int x1, int y1, int x2, int y2, int color) { float m = (y2-y1)/(x2-x1); float b = y1 - m*x1; float y; int x; Exemplo b (x1,y1) (x2,y2) y=mx+b } PutPixel(x1,y1,color); for (x=x1+1; x<=x2; x++) { y = m*x + b; PutPixel(x,ROUND(y), color); } (9,4) (4,2.33) (5,3) 1 y=(1/3)x+1 (3,2) 3 2 2 (4,2) (3,2) (5,2.66) 3 4 5 Calcula-se m e b 1 a iteração 2 a iteração 3 a iteração 8

Conversão por varrimento do segmento de recta? Método do Declive (cont...) Problemas:? Segmentos de recta verticais.? 2 operações de ponto flutuante por pixel? Por que trabalhar em float se os pixels são inteiros??? void Line1(int x1, int y1, int x2, int y2, int color) { float m = (y2-y1)/(x2-x1); float b = y1 - m*x1; float y; int x; PutPixel(x1,y1,color); } for (x=x1+1; x<=x2; x++) { y = m*x + b; PutPixel(x,ROUND(y), color); } 9

Conversão por varrimento do segmento de recta? Simple DDA (Digital Differential Analyzer)? Este algoritmo utiliza o seguinte igualdade: m*(x+1) + b = (m*x +b) + m = y + m? Então se 0 < m < 1 então podemos considerar que x=1 e x k+1 = x k +1; y k+1 = y k + m (2)? Para segmentos com m > 1 devemos inverter os valores de x e y. Neste caso podemos assumir que y=1 e então da equação x= y/m obtemos que x=1/m e finalmente podemos calcular y k+1 = y k +1; x k+1 = x k + 1/m (3) 10

Conversão por varrimento do segmento de recta? Simple DDA (Digital Differential Analyzer)? As equações x k+1 = x k +1; y k+1 = y k + m (2) y k+1 = y k +1; x k+1 = x k + 1/m (3) são válidas se consideramos que os segmentos são processados de esquerda a direita.? Em caso contrário vamos ter que x= -1 pelo que x k+1 = x k - 1; y k+1 = y k - m (4) Ou para o caso que m>1 então temos que y= -1 e y k+1 = y k - 1; x k+1 = x k - 1/m (5)? Estas equações podem ser utilizadas também para calcular a posição dos pixels de segmentos com m<0 (Exercício) 11

Conversão por varrimento do segmento de recta? Simple DDA (versão 0< m <1) void LineDDA(int x1, int y1, int x2, int y2, int color) { float y; float m = (y2-y1)/(x2-x1); int x; PutPixel(x1,y1, color); y = y1; } for (x=x1+1; x<=x2; x++) { y += m; PutPixel(x,ROUND(y), color); }? Problemas:? Aproximações muito grosseiras de y 12

Conversão por varrimento do segmento de recta? Simple DDA (cont...) Observações:? O número total de pixels desenhados pelo método DDA é igual a max( x, y)? Para segmentos (S) horizontais/verticais o max( x, y) = Length(S) ideal!!!? Para segmentos oblíquos com ângulo de inclinação de 45 0 então: Length(S) = Sqrt( x 2 + y 2 ) = Sqrt(2* x 2 ) = = Sqrt(2)* x 1,41*dx x = 0,71* Length (S)? O segmento S só tem um 71% dos pontos!!! 13

Conversão por varrimento do segmento de recta? O Algoritmo de Bresenham (Bresenham, J.E. Algorithm for computer control of a digital plotter, IBM Systems Journal, January 1965, pp. 25-30.)? É um algoritmo eficiente já que apenas recorre a adições e subtracções inteiras e multiplicações por 2.? Ideia fundamental: A melhor aproximação ao segmento de recta verdadeiro é dada pelos pixels do raster a menor distância do segmento de recta verdadeiro 14

Conversão por varrimento do segmento de recta? O Algoritmo de Bresenham? Em vez de computar o valor do próximo y em ponto flutuante, o problema fica reduzido a decidir se o próximo pixel vai ter coordenadas (x + 1, y) ou (x + 1, y + 1)? Esta decisão requer que se avalie se a linha passa acima ou abaixo do ponto médio (x + 1, y + 1) (x + 1, y + ½) (x, y) (x + 1, y) 15

Conversão por varrimento do segmento de recta? O Algoritmo de Bresenham? Variável de decisão V é dada pela classificação do ponto médio com relação ao semi-espaço definido pela recta V? Caso 1: Linha passou abaixo do ponto médio (x+1,y+1) ax+by+c=v (x,y+1) onde V = 0 (x,y) sobrea recta V < 0 (x,y) abaixodarecta (x,y+½) V 1 V > 0 (x,y) acimadarecta (x+1,y+½) V 1 =a(x+ 1)+b(y+ 12)+c V 0 V =ax+b(y+ 12)+c (x,y) (x+1,y) 0 1 V =V +a 0 16

Conversão por varrimento do segmento de recta? O Algoritmo de Bresenham? Caso 2: Linha passou acima do ponto médio (x+1,y+2) (x,y+1) (x+1,y+ 1+ ½) V 1 (x+1,y+1) V 1 = a ( x+1)+b( y+1+ 1 2 )+c V 0 = ax+b ( y + 1 2 )+c V 1 = V 0 +a +b V 0 (x,y+½) (x,y) 17

Conversão por varrimento do segmento de recta? O Algoritmo de Bresenham? Coeficientes da recta a = y 2 y 1 b = x 1 x 2 c = x 2 y 1 x 1 y 2? Para iniciar o algoritmo, precisamos saber o valor de V em (x 1 + 1, y 1 + ½) V = a (x 1 + 1) + b (y 1 + ½) + c = a x 1 + b y 1 + c + a + b/2 = a + b/2 como a x 1 + b y 1 + c = 0 então temos que V = a + b/2? Podemos evitar a divisão por 2 multiplicando a, b e c por 2 (não altera a equação da recta) 18

Conversão por varrimento do segmento de recta? O Algoritmo de Bresenham (0 a 45º) a y 2 y 1 b x 1 x 2 V 2 * a + b x x 1 y y 1 Enquanto x x 2 fazer: Pintar pixel (x, y) x x + 1 Se V 0 Então V V + 2 * a Senão V V + 2 * (a + b) ; y y + 1 19

Conversão por varrimento do segmento de recta? O Algoritmo de Bresenham? Outra versão deste algoritmo pode ser encontrada em: http://www.cs.helsinki.fi/group/goa/mallinnus/lines/bresenh.html http://www.gocad.org/~caumon/teach/cg/bresenham.pdf 20

Conversão por varrimento do segmento de recta? O Algoritmo de Bresenham Extensão ( ângulo de inclinação)? Ver no documento AlgBre.zip (nos sumários práticos da disciplina) 21

Conversão por varrimento do segmento de recta? O Algoritmo de Bresenham Implementação Java http://www.cs.unc.edu/~mcmillan/comp136/lecture6/lines.html Applet http://www.cs.technion.ac.il/~cs234325/applets/applets/bresenham/germanapplet.html 22

Conversão por varrimento da circunferência? Uma circunferência é uma figura simétrica!? Qualquer algoritmo por varrimento da circunferência pode tirar partido desta simetria para desenhar oito pontos a partir de cada valor que o algoritmo calcula. 23

Conversão por varrimento da circunferência? Exemplo: Simetria a 4 eixos 24

? Método Polinomial Conversão por varrimento da circunferência? Uma circunferência pode ser definida pela seguinte equação polinomial: y 2 = r 2 x 2, onde r raio da circunferência? Então cada coordenada x, no sector que vai de 90º a 45º é determinada por sucessivos incrementos de x de 0 a 2 2 2 2 2 e r / 2 ( x = r y 2x = r ) 2 cada coordenada y é calculada por r x? Observação: este método tem operações aritméticas muito custosas para o computador? é muito pouco eficiente!!! 2 25

Conversão por varrimento da circunferência? Método Polinomial Organigrama: 1. Inicializar: r - raio, (h, k) centro da circunferência: (x, y) = (0,0); i = incremento; xfim = r/sqrt(2); 2. Testar se a circunferência foi gerada totalmente: se x > xfim, STOP 3. Calcular o valor de y: y = sqrt(r 2 -x 2 ) 4. Desenhar os pontos da simetria: (x+h, y+k); (-x+h, -y+k); (y+h, x+k); (-y+h, -x+k); (-y+h, x+k); (y+h, -x+k); (-x+h, y+k); (x+h, -y+k) 5. Incrementar x: x = x+i 6. Continuar no passo 2 26

Conversão por varrimento da circunferência? Método Trigonométrico Uma circunferência pode ser definida mediante a utilização de funções trigonométricas: x = r*cos(θ); θ y = r*sen(θ) θ onde θ ângulo corrente r raio da circunferência Com este método, θ é sucessivamente incrementado de 0 a π/4 e cada valor de x e y é calculado Este método tem operações aritméticas ainda mais custosas que o método polinomial? é muito pouco eficiente!!! 27

Conversão por varrimento da circunferência? Método Trigonométrico Organigrama: 1. Inicializar r - raio, (h, k) centro da circunferência: (x,y) = (0,0), i = incremento, θ fim = (22/7)/4 (=π/4=45º); θ=0 2. Testar se a circunferência foi gerada totalmente: se θ > θ fim, STOP 3. Calcular os valores de x e y: x = r*cos(θ); y = r*sen(θ) 4. Desenhar os pontos da simetria: (x+h, y+k); (-x+h, -y+k); (y+h, x+k); (-y+h, -x+k); (-y+h, x+k); (y+h, -x+k); (-x+h, y+k); (x+h, -y+k) 5. Incrementar θ: θ = θ + i 6. Continuar no passo 2 28

Conversão por varrimento da? Observações gerais: circunferência? Para traçar eficientemente uma circunferência deve ser evitada a utilização de funções trigonométricas e funções de potências.? Para encontrar os pontos de conversão por varrimento da circunferência é desejável efectuar apenas cálculos de adição e subtracções inteiras, assim como multiplicações por potências de 2.? O algoritmo de Bresenham permite que tal seja conseguido!!! 29

Conversão por varrimento da? Algoritmo de Bresenham para a circunferência circunferência? Se é usada a simetria em relação a quatro eixos, apenas temos de gerar os pontos num sector angular de 45º? Se os pontos forem gerados de 90º a 45º, apenas serão feitos movimentos nas direcções de +x e y 30

Conversão por varrimento da circunferência? Algoritmo de Bresenham para a Circunferência (cont...)? Ideia básica A melhor aproximação à circunferência verdadeira será definida por aqueles pixels que estão a menor distância da circunferência verdadeira. 31

Conversão por varrimento da circunferência? Algoritmo de Bresenham para a Circunferência (cont...)? Note que se os pontos são gerados de 90º a 45º, podemos determinar cada novo tomando uma das seguintes acções:? Mover uma unidade da direcção +x? Mover uma unidade na direcção +x e uma na direcção -y? É preciso um método (eficiente) para decidir entre essas duas alternativas!!! 32

Conversão por varrimento da circunferência? Algoritmo de Bresenham para a circunferência Sejam: Relativamente ao pixel P 3 : 2 2 2 D( Si ) = ( xi 1 + 1) + yi 1 r Relativamente ao ponto P 2 2 2 D( T ) ( x + 1) + ( y 1 r Por definição D(S i )>0 e D(T i ) 0 Seja d i = D(S i ) + D(T i ) Então d A partir dessa equação e sabendo que (x 0,y 0 ) é (0,r) podemos obter que: d 1 = 3-2*r i = i 1 i 1 ) 2 2 2 2 2 i = xi 1 + 1) + yi 1 r + ( xi 1 + 1) + ( yi 1 1) ( r 2 2 P(x i-1,y i-1 ) 33

Conversão por varrimento da circunferência? Algoritmo de Bresenham para a circunferência P(x i-1,y i-1 ) Se d i 0 então sabemos que x i+1 = x i + 1; y i+1 = y i Utilizando a recorrência d i (Exercício) podemos determinar que d i+1 = d i + 4x i + 6 Se d i > 0 então sabemos que x i+1 = x i + 1; y i+1 = y i -1 Utilizando a recorrência d i (Exercício) podemos determinar que d i+1 = d i + 4(x i y i )+ 10 34

Conversão por varrimento da circunferência? Algoritmo de Bresenham para a circunferência Organigrama: 1. Inicializar r - raio, (h, k) centro da circunferência: x = 0; y = raio da circunferência; d = 3-2*r; 2. Testar se a circunferência foi gerada totalmente: se x > y, STOP 3. Calcular a localização do próximo pixel: Se d<0? d = d+4*x+6; x = x+1; Se d 0? d = d+4*(x-y)+10; x = x+1; y = y-1; 4. Desenhar os pontos da simetria: (x+h, y+k); (-x+h, -y+k); (y+h, x+k); (-y+h, -x+k); (-y+h, x+k); (y+h, -x+k); (-x+h, y+k); (x+h, -y+k) 5. Continuar no passo 2 35

Conversão por varrimento da elipse? Definição polinomial da elipse? A elipse apresenta, tal como a circunferência simetrias.? As simetrias da elipse são em relação a dois eixos em vez de a quatro eixos.? Definição Polinomial: ( x? onde h) 2 a 2 + ( y k) 2 b = 1? (h, k) centro da elipse;? a cumprimento do eixo maior? b cumprimento do eixo menor 2 Neste método: x varia de h até a; o valor de y é determinado por: 2 x h y = b 1 + k 2 a 36

Conversão por varrimento da elipse? Definição polinomial da elipse Organigrama: 1. Inicializar a cumprimento do eixo maior, b cumprimento do eixo menor, (h, k) centro da elipse: x = 0; i = incremento; xfim = a; 2. Testar se a elipse foi gerada totalmente: se x > xfim, STOP 3. Calcular o valor de y: 2 x y = b 1 a 2 4. Desenhar os pontos da simetria: (x+h, y+k); (-x+h, -y+k); (-x+h, y+k); (x+h, -y+k) 5. Incrementar x: x = x + i 6. Continuar no passo 2 37

Conversão por varrimento da elipse? Definição trigonométrica da elipse? Uma elipse pode ser definida mediante a utilização de funções trigonométricas: x = a*cos(θ)+h ; y = b*sen(θ)+k, onde θ ângulo corrente a cumprimento do eixo maior b cumprimento do eixo menor (h, k) centro da elipse? Com este método, θ é sucessivamente incrementado de 0 a π/2 e cada valor de x e y é calculado utilizando a definição trigonométrica 38

Conversão por varrimento da elipse? Definição trigonométrica da elipse Organigrama: 1. Inicializar a cumprimento do eixo maior, b cumprimento do eixo menor, (h, k) centro da elipse: i = incremento, θ fim = (11/7) (=π/2=90º); θ = 0 2.Testar se a elipse foi gerada totalmente: se θ > θ fim, STOP 3. Calcular os valores: x = a*cos(θ); y = b*sen(θ) 4. Desenhar os pontos da simetria: (x+h, y+k); (-x+h, -y+k); (-x+h, y+k); (x+h, -y+k) 5. Incrementar θ: θ = θ +i 6. Continuar no passo 2 39

? Arcos Conversão por varrimento de arcos? Um arco pode ser gerado quer usando o método polinomial que o trigonométrico.? Quando é utilizado o método trigonométrico? O valor inicial θ e igual a θ 1 e o valor final θ 2? Os restantes passos são semelhantes aos usados para a conversão por varrimento da circunferência.? Quando é utilizado o método polinomial? O valor de x varia entre x 1 e x 2? Os valores de y são calculados pela expressão: 2 2 r x 40

Conversão por varrimento de arcos? Arcos Organigrama (Método Trigonométrico) 1. Inicializar a eixo maior, b cumprimento do eixo menor, (h, k) centro do arco: i = incremento, θ - ângulo inicial, θ 1 ângulo final 2. Testar se o arco foi gerado totalmente: se θ > θ 1, STOP 3. Calcular os valores: x = a*cos(θ)+h; y = b*sen(θ)+k 4. Desenhar um ponto nas coordenadas (x,y) 5. Incrementar θ: θ = θ + i 1. Continuar no passo 2 Nota: arco circular a = b = raio da circunferência 41

Geração de Caracteres Em Computação Gráfica existem duas técnicas básicas para a geração de caracteres: 1. Cada caracter é definido através do seu contorno (curva o linha poligonal) que se desenha utilizando procedimentos do tipo raster. Esta solução é custosa computacionalmente e não é muito utilizada em aplicações de processamento de texto. Apenas é utilizada em aplicações específicas que editem fontes. 2. Cada caracter é definido em termos de um bitmap rectangular. Gerar um caracter equivale a copiar apenas um bitmap para o ecrã. Todos os caracteres de todas as fontes disponíveis estão assim representadas com um respectivo bitmap. 42

Aliasing vs Anti-aliasing? A discretização dos segmentos pode causar distorções visuais como cisalhamento ou efeito de escada.? Essas distorções são chamadas de aliasing? Para reduzir o problema de aliasing, usa-se uma técnica chamada anti-aliasing? A técnica consiste em uma superamostragem (uma vez que o aliasing é causada por uma subamostragem) 43

SUPERAMOSTRAGEM dividir os pixels em subpixels (i.e. 9), aplicar o algoritmo de Bresenham nesses sub-pixels contar o número de sub-pixels acesos por pixel O pixel será aceso com intensidade proporcional ao número de sub-pixels acesos. 3 3 1 3 3 2 44

Exemplo de Anti-aliasing em Linhas? Quando a cor de fundo não é preto, o anti-aliasing deve fazer uma composição da intensidade com a cor de fundo.? Anti-aliasing é necessário não só para linhas, mas também para estruturas mais complexas o que torna esta tarefa mais complicada. 45