Primitivos gráficos - algoritmos

Documentos relacionados
Primitivos gráficos - algoritmos

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

Desenho de Segmentos de Recta

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

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

Desenho de Segmentos de Recta

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

Rasterização de primitivas 2D

Conversão por Varrimento

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

ALGORITMOS PARA DESENHAR RETAS E CÍRCULOS

Primitivas Gráficas. Prof. Márcio Bueno Fonte: Material do Prof. Robson Pequeno de Sousa e do Prof.

Algoritmos de Rasterização e Recorte

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

Computação Gráfica. Rasterização de Linhas Professora Sheila Cáceres

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

Algoritmos de Varrimento para Desenho de Primitivas 2D

Pipeline de Visualização 2D

Computação Gráfica 04

Conversão Matricial. Prof. Fernando V. Paulovich 20 de maio de SCC Computação Gráca

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

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

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

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

Computação Gráfica e Processamento de Imagens. recorte ( clipping ) de : o segmentos de retas o polígonos o textos. Prof.

PROJETO GEOMÉTRICO DE RODOVIAS CURVAS VERTICAIS. Curso: 7º Período - Engenharia de Agrimensura e Cartográfica. Prof. Paulo Augusto F.

Rasterização de linhas e polígonos

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

Geometria Analítica I

Equações Paramétricas e Coordenadas Polares. Copyright Cengage Learning. Todos os direitos reservados.

1 Para expressar um ponto intermediário em função dos pontos extremos, precisamos

Pipeline Gráfico Cluter & Durand, MIT

Cilindros projetantes de uma curva

ALGORITMO DE BRESENHAM: O USO MICROCONTROLADORES PARA TRAÇAR RETAS EM LCDs

Cálculo II Lista 5. com respostas

Introdução ao Processamento e Síntese de imagens -Linhas e superfícies escondidas

Capítulo 3 - Geometria Analítica

CÁLCULO VETORIAL E GEOMETRIA ANALÍTICA

Geometria Analítica I

Aulas Anteriores. Detalhes da linguagem de programação

Parte 1: Exercícios Teóricos

Métodos de Pesquisa Operacional

ADA 1º BIMESTRE CICLO I MATEMÁTICA 3ª SÉRIE DO ENSINO MÉDIO. (B)y = x + 3 (C)y = 2x + 3 (D)y = 3x - 3 (E)y = 5x + 5 Gabarito: D.

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

ALGORITMOS RASTER PARA DESENHO DE. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

TÉCNICO DE INFORMÁTICA - SISTEMAS

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Matemática I Tecnólogo em Construção de Edifícios e Tecnólogo em Refrigeração e Climatização. y = ax² + bx + c

Sendo C(a, b) o centro e P(x, y) um ponto qualquer da circunferência, a distância de C a P(dCP) é o raio dessa circunferência.

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

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

TÓPICO. Fundamentos da Matemática II APLICAÇÕES NA GEOMETRIA ANALÍTICA. Licenciatura em Ciências USP/ Univesp. Gil da Costa Marques

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

Equações Diferenciais Noções Básicas

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

APLICAÇÕES NA GEOMETRIA ANALÍTICA

Aula Anterior. Decomposição algorítmica (continuação)

Equações Diferenciais Problemas de Valor Inicial. Computação 2º Semestre 2016/2017

Capítulo 7: Representação gráfica de equações paramétricas 127. (x(t),y(t)) y(t) = v 0 t sin q (g/2)tñ. x(t) = v 0 t cos q

Objetos definidos no seu próprio sistema de coordenadas

Cálculo Numérico Prof. Guilherme Amorim 24/10/2013. Aula 2 Erros e Aritmética de Ponto Flutuante

Preliminares de Cálculo

Aula Exemplos e aplicações. Exemplo 1. Nesta aula apresentamos uma série de exemplos e aplicações dos conceitos vistos.

Índice. AULA 5 Derivação implícita 3. AULA 6 Aplicações de derivadas 4. AULA 7 Aplicações de derivadas 6. AULA 8 Esboço de gráficos 9

ALGA - Eng. Civil e Eng. Topográ ca - ISE / Geometria Analítica 89. Geometria Analítica

Resolvendo algebricamente um PPL

CES-11. Noções de complexidade de algoritmos. Complexidade de algoritmos. Avaliação do tempo de execução. Razão de crescimento desse tempo.

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

DCC008 - Cálculo Numérico

EQUAÇÕES DIFERENCIAIS ORDINÁRIAS - Lista I

ARCOS CAD. bhttp://

Aula Elipse. Definição 1. Nosso objetivo agora é estudar a equação geral do segundo grau em duas variáveis:

Equações Diferenciais Noções Básicas

MAT 1351 : Cálculo para Funções de Uma Variável Real I. Sylvain Bonnot (IME-USP)

Aula 4: Gráficos lineares

GEOMETRIA ANALÍTICA E CÁLCULO VETORIAL GEOMETRIA ANALÍTICA BÁSICA. 03/01/ GGM - UFF Dirce Uesu Pesco

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

INTRODUÇÃO AO CÁLCULO AULA 04: EQUAÇÕES, INEQUAÇÕES E SISTEMAS DE EQUAÇÕES TÓPICO 02: SISTEMA DE EQUAÇÕES DO 1º GRAU 1. SISTEMA DE EQUAÇÕES DO PRIMEIR

Questão 1: O histograma deve ser: [0, 1, 4, 2, 0, 3, 0,, 0, 2] Exemplo: Para a matriz

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

Conjuntos Numéricos. É o conjunto no qual se encontram os elementos de todos os conjuntos estudados.

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

Passeio pelo Rio. Dinâmica 6. 3º Série 3º Bimestre. DISCIPLINA Ano CAMPO CONCEITO. Matemática 3ª do Ensino Médio Geométrico Geometria analítica.

Universidade Federal do Pará Curso de Licenciatura em Matemática PARFOR Lista de Exercícios Referentes a Prova Substitutiva de Geometria Analítica

Transcrição:

Primitivos gráficos - algoritmos Prof. Julio Arakaki 1

Algoritmos de reta Reta => infinitamente fina, ou seja, área = 0 Problemas para apresentação num monitor raster utilizando-se pixels: deve-se escolher quais pixels melhor representa a reta existem muitos algoritmos que possibilitam diferentes resultados 2

Algoritmo de reta equação reduzida Através da equação de reta: y = mx + b Problemas: for(int x = x_min; x <= x_max; x++) { int y = (int)round(m*x + b); desenharponto(x, y, cor); } Linhas verticais. (m = ) Lento, pois para todo x tem-se: uma multiplicação em floating point uma adição em floating point uma chamada de função de arrendondamento ( round ) 3

Algoritmo de reta Digital Differential Analyser (DDA) Algoritmo simples e também não muito eficiente incremental Incrementa x de 1 ( x = 1) e atualiza y de acordo com: y 1 = mx 1 + b x 2 = x 1 + 1 y 2 = mx 2 + b = m(x 1 + 1) + b = (mx 1 + b) + m = y 1 + m Desenha o pixel (x, round(y)) em cada iteração 4

Algoritmo de reta Digital Differential Analyser (DDA) - exemplo reta: (2,2) (7,6) y = y + m m = 0.8 x = 1 x y Round(y) (7,7) 2.0 2.0 2 3.0 2.8 3 4.0 3.6 4 5.0 4.4 4 6.0 5.2 5 7.0 6.0 6 (0,0) desenharponto(x, round(y)); 5

Algoritmo de reta Digital Differential Analyser (DDA) float y; float m = (y2-y1)/(x2-x1); desenharponto(x1,y1, cor); y = y1; while( x1 < x2 ){ x1++; y += m; desenharponto(x1, ROUND(y), cor); } x é um inteiro, mas y é floating point. custo: incremento, adição em floating point e chamada da função de arredondamento round(y) para cada valor de x. 6

Algoritmo de reta Midpoint algoritm (Bresenham 1965) Mais eficiente que DDA. incremental e cálculo baseado em inteiros Em cada iteração determinamos se a linha intersecciona o próximo pixel acima ( above ) ou abaixo ( below ) da metade ( midpoint ) do valor de y. se acima então A: y i+1 = y i +1 caso contrário B: y i+1 = y i 7

Algoritmo de reta Midpoint algoritm Utiliza a forma implícita da equação de reta: ax i + by i + c = 0 : (x i, y i ) Na reta ax i + by i + c < 0 : (x i, y i ) Acima da reta ax i + by i + c > 0 : (x i, y i ) Abaixo da reta A cada iteração, verifica se o midpoint está acima ou abaixo da reta Examina-se o valor de: d i =a(x i + 1) + b(y i + ½) + c d i é uma variável de decisão no passo i 8

Algoritmo de reta Midpoint algoritm Se d i > 0 então escolhe-se o pixel A novo midpoint deverá ser checado: (x i + 2, y i + 3/2) : d i+1 = a(x i + 2) + b(y i + 3/2) + c = [a(x i + 1) + b(y i +1/2) + c] + a + b = = d i + a + b 9

Algoritmo de reta Midpoint algoritm Similarmente, se d i < 0 então escolhe-se o pixel B e o novo midpoint é: (x i + 2, y i + 1/2) : d i+1 = a(x i + 2) + b(y i + 1/2) + c = [a(x i + 1) + b(y i +1/2) + c] + a = d i + a Onde, para y=(dy/dx)*x + C temos: (dy/dx)*x y + C = 0 Multiplicando por dx todos os termos temos: a = dy = y end y start b = -dx = -(x end x start ) c = Cdx 10

Algoritmo de reta Midpoint algoritm No ponto inicial, a variável de decisão é calculada da seguinte forma: (x start +1, y start +1/2): d start = a(x start + 1) + b(y start + 1/2) + C = [ax start + by start + c] + a + b/2 = 0 + a + b/2 Uma parte fracionária é introduzida, b/2, mas pode se eliminar pois interessa-se somente o sinal de d - multiplicando por 2: d start = 2a + b, - ou seja, substituindo os valores de a e b: d i = 2 dy dx, 11

Algoritmo de reta Midpoint algoritm Cálculo do próximo valor de decisão Multiplicando por 2 e substituindo a e b : Para d i > 0 : d i+1 = d i + 2(a + b) = d i + 2(dy dx) Para d i < 0 : d i+1 = d i + 2a = d i + 2(dy) 12

Algoritmo de reta Midpoint algoritm dx = x_end - x_start; dy = y_end - y_start; d = 2*dy dx; inicialização x = x_start; y = y_start; while (x < x_end) { if (d <= 0){ d = d + (2*dy); seleciona B x = x + 1; } else { d = d + 2*(dy - dx); x = x + 1; seleciona A y = y + 1; } desenharponto(x, y, cor); } 13

Exemplo: Algoritmo de reta Midpoint algoritm Traçar a reta passando por: P1(2,2) e P2(7,6) dx = (7-2) = 5 dy = (6-2) = 4 Inicial: (d = 2*dy - dx) Ou seja, d = 3 se d > 0 (d = d + 2 * dy) ou seja, d = d - 2 se d < 0 (d = d + 2*(dy - dx)) ou seja, d = d + 8 14

Algoritmo de reta Midpoint algoritm reta: (2,2) (7,6) dx = 5 dy = 4 d = 3 if d>0 then d=d-2, y=y+1 if d<0 then d=d+8 x y d 7 (7,7) 2 2 3 6 3 3 1 5 4 4-1 4 5 4 7 3 6 5 5 2 7 6 3 1 (0,0) 1 2 3 4 5 6 7 15

Algoritmo de círculo Midpoint algoritm Círculo com raio r e centro (x c, y c ) é definido parametricamente como: x = x c + rcos y = y c + rsen Variando de 0 até 2p plotando-se as coordenadas: Dificuldade para efetivamente controlar a dimensão do passo, para eliminar os espaços entre os pixels 16

Algoritmo de círculo Midpoint algoritm Forma implícita do círculo: (x x c ) 2 + (y y c ) 2 r 2 = 0 Utiliza um esquema similar ao algoritmo de reta ( midpoint ): Necessário a determinação dos pixels de um octante, os pixels de outros octantes são determinados pela simetria A variável de decisão é calculada da seguinte forma: d i : < 0 se (x i, y i ) dentro do círculo = 0 se (x i, y i ) no círculo > 0 se (x i, y i ) fora do círculo 17

Algoritmo de círculo Midpoint algoritm Como na reta, determina-se o valor da variável de decisão pela substituição do midpoint do próximo pixel pela forma implícita do círculo: d i = (x i + 1) 2 + (y i 1/2) 2 - r 2 Se d i < 0 escolhe-se pixel A senão escolhe-se pixel B 18

Algoritmo de círculo Midpoint algoritm Semelhante ao algoritmo de reta, a escolha de A ou B pode ser utilizado para determinar o novo valor de d i+1 Se A for escolhido, então o próximo midpoint tem o seguinte variável de decisão: (x i + 2, y i 1/2) : d i+1 = (x i + 2) 2 + (y i 1/2) 2 r 2 = d i + 2x i + 3 Por outro lado, se B for escolhido, então a próxima variável de decisão é: (x i + 2, y i 3/2) : d i+1 = (x i + 2) 2 + (y i 3/2) 2 r 2 = d i + 2x i 2y i + 5 19

Algoritmo de círculo Midpoint algoritm Assumindo-se que o raio é um valor integral, então o primeiro pixel a ser desenhado é (0, r) e o valor inicial da vaariável de decisão é dado por: (1, r-1/2) : d 0 = 1 + (r 2 r + 1/4) r 2 = 5/4 - r Neste caso o valor é fracionário, e todos os outros são inteiros. Pode-se arredondar para: d 0 = 1 - r 20

Algoritmo de círculo Midpoint algoritm d = 1-r; x = 0; inicialização y = r; while (x < y) { if (d < 0) { d = d + 2*x + 3; seleciona A x = x + 1; } else{ d = d + 2*(x - y) + 5; x = x + 1; seleciona B y = y 1; } desenharponto(c x +x,c y +y) } 21

Algoritmo de elipse Midpoint algoritm F x y b x a y a b 2 2 2 2 2 2 (, ) 0 22

Algoritmo de elipse Midpoint algoritm 23

Algoritmo de elipse Midpoint algoritm 24