SlideShare uma empresa Scribd logo
1 de 71
TRAÇADO EM
DISPOSITIVOS GRÁFICOS
MATRICIAIS
PRIMITIVAS GRÁFICAS:
PONTOS, RETAS, CIRCULOS,
ELIPSES, POLÍGONOS
Prof.ª Elaine Cecília Gatto
25/02/2016Prof.ªM.ªElaineCecíliaGatto1
Resolução Gráfica
• Virtualmente todos os dispositivos de I/O
gráficos usam uma malha retangular de
posições endereçáveis – a qual é
denominada “retângulo de visualização”.
• A “resolução gráfica” de um dispositivo é o
número de posições (ou pontos, ou pixels)
horizontais e verticais que ele pode
distinguir.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
2
Resolução Gráfica
• Existem 4 parâmetros que definem a resolução:
1. ndh: o número de posições endereçáveis
horizontalmente
2. ndv: o número de posições endereçáveis
verticalmente
3. width: a largura do retângulo de visualização em
mm
4. height - a altura do retângulo de visualização em
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
3
Resolução Gráfica
• A partir desses 4 parâmetros, vários números
interessantes podem ser calculados:
1. resolução horizontal: horiz_res = ndh/width
2. resolução vertical: vert_res = ndv/height
3. total pontos endereçáveis: total_nr_dots =
ndh.ndv
4. resolução de área: area_res = total_nr_dots
/ (width.height)
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
4
Sistemas de Coordenadas
• Na CG é necessário definir sistemas de
coordenadas para quantificar os dados que
estão
• sendo manipulados.
• Já vimos que os dispositivos de visualização
gráfica matriciais consistem de uma matriz
de pixels endereçáveis, e um gráfico é
formado “acendendo” ou “apagando” um
pixel.
• Os pixels são endereçados por dois números
inteiros que dão suas coordenadas horizontal
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
5
Sistemas de Coordenadas
• Número da coluna da matriz de pixels: dcx + 1
• Número da linha da matriz de pixels: dcy + 1
• O pixel endereçado como (0, 0) está geralmente
no canto inferior esquerdo do retângulo de
visualização
• As coordenadas (dcx, dcy) são chamadas de
coordenadas do dispositivo, e podem assumir
apenas valores inteiros.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
6
Sistemas de Coordenadas
• Coordenadas do dispositivo podem variar
bastante para diferentes equipamentos, o que
levou à utilização de coordenadas normalizadas
do dispositivo (NDC - normalized device
coordinates), para efeito de padronização (ndcx,
ndcy).
• NDCs são variáveis reais, geralmente definidas
no intervalo de 0 a 1
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
7
Sistemas de Coordenadas
• A coordenada NDC(0,0) corresponde à origem (0, 0) nas
coordenadas do dispositivo
• A coordenada NDC(1,1) refere-se ao pixel no canto
superior direito
• A vantagem da utilização de NDCs é que padrões gráficos
podem ser discutidos usando um sistema de coordenadas
independente de dispositivos gráficos específicos.
• Obviamente, os dados gráficos precisam ser
transformados do sistema de coordenadas independente
para o sistema de coordenadas do dispositivo no momento
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
8
Sistemas de Coordenadas
• Sistema de cordenadas físico (pcx, pcy)
• pcx: distância física ao longo do eixo x a partir
do extremo esquerdo do retângulo de
visualização
• pcy: a distância física ao longo do eixo y a partir
do extremo inferior.
• As unidades de medida utilizadas são
polegadas ou milímetros
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
9
Sistemas de Coordenadas
• Sistema de coordenadas do mundo
• Ou sistema de coordenadas do usuário
• Consiste de coordenadas cartesianas (x, y), num
intervalo qualquer definido pelo usuário
• Os parâmetros que definem o intervalo de valores
de x e y, xmin, ymin, xmax e ymax, definem uma
área retangular no espaço bidimensional,
denominada de janela
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
10
Sistemas de Coordenadas
• Para visualizar dados num dispositivo gráfico
qualquer, é necessário transformá-los das
coordenadas do usuário para NDCs, e de NDCs
para coordenadas do dispositivo.
• Da mesma forma, dados de entrada gráficos
precisam ser transformados de coordenadas do
dispositivo para NDCs, e depois para coordenadas
do usuário
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
11
Sistemas de Coordenadas
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
12
Figura 1: Sistemas de Coordenadas
Traçado
• O traçado de primitivas gráficas
elementares, como segmentos de reta ou
arcos de circunferência, requer a construção
de algoritmos capazes de determinar na
matriz de pixels da superfície de exibição,
quais pixels devem ser alterados de forma a
simular-se a aparência do elemento gráfico
desejado.
• Estes algoritmos recebem o nome de
Algoritmos de Conversão Matricial, por
converterem em representação matricial
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
13
Traçado
• Um elemento geométrico básico a ser
traçado num terminal gráfico é o segmento
de reta.
• Atualmente, é comum que rotinas de traçado
de linhas estejam disponíveis em hardware
(em chips controladores).
• O chip recebe as coordenadas dos pixels
extremos, e calcula quais pixels
intermediários da superfície de exibição
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
14
Traçado
• Gráficos complexos requerem o traçado
de uma grande quantidade de segmentos
de reta, e a velocidade é importante
• Daí a opção de traçado por meio de
hardware especializado, que libera o
processador hospedeiro para outras
atividades enquanto o chip controlador
calcula os pixels a serem traçados.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
15
Traçado
• Se a função de traçado precisa ser
implementada em software, a rotina deve
ser escrita em código de máquina
otimizado para atingir o máximo de
velocidade.
• Entretanto, é instrutivo estudar alguns
algoritmos para traçado de linhas usando
uma linguagem de alto nível.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
16
Simetria e Reflexão
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
17
Figura 2: Representação de segmentos de reta horizontais, verticais e diagonais
Simetria e Reflexão
• Simetria e Reflexão são
propriedades
importantes do espaço
onde os diversos
elementos gráficos
serão traçados.
• Pode-se dizer que
estas direçõe formam
na realidade eixos de
simetria no espaço
matricial.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
18
Simetria e Reflexão
• Logo, qualquer imagem
representada no espaço
matricial pode ser refletida
em relação a qualquer reta
horizontal, vertical ou
diagonal sem apresentar
qualquer deformação
• A Simetria é explorada na
conversão matricial de
primitivas gráficas que
apresentem simetria e
relação a qualquer um
destes eixos.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
19
Simetria e Reflexão
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
20
Figura 3: Reflexão de uma imagem com relação a um eixo diagonal
Simetria e Reflexão
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
21
Figura 4a: Rotação de 90 graus obtida através de 2 reflexões, uma horizontal (a) e
outra na diagonal (b).
Simetria e Reflexão
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
22
Figura 4b: Rotação de 90 graus obtida através de 2 reflexões, uma horizontal (a) e
outra na diagonal (b).
Ponto
• Um PONTO em CG como é um pixel, cujas
propriedades são:
– Posição no plano
– Cor
• O tamanho do pixel vai depender da resolução gráfica
e tamanho físico do dispositivo de exibição da
imagem.
• As operações de manipulação de pixels representam
uma das essências da CG, pois a partir dessa
manipulação, imagens são construídas ou alteradas.
• Os elementos gráficos mais complexos exigem uma
sequência de ações para que possam ser construídos
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
23
Conversão Matricial de
Segmentos de Reta
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
24
Figura 5: Alguns critérios de conversão matricial podem ser vistos através desta figura
Conversão Matricial de
Segmentos de Reta
• 1.º Critério:
• Selecionamos os dois
pixels imediatamente
acima e abaixo do
ponto de intersecção
ao do segmento com
cada vertical, a menos
quando o segmento
passa por um pixel.
• Restrição: linhas
densas são obtidas,
como se o segmento
fosse espesso
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
25
Figura 5a: 1.º Critério de conversão
matricial de segmentos de reta
Conversão Matricial de
Segmentos de Reta
• 2.º Critério:
• Selecionamos todos os
pixels cujas
coordenadas são
obtidas arredondando-
se os valores das
coordenadas de algum
ponto do segmento.
• Restrição: com
segmentos a 45 graus,
este critério produz
resultados
semelhantes ao
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
26
Figura 5b: 2.º Critério de conversão
matricial de segmentos de reta
Conversão Matricial de
Segmentos de Reta
• 3.º Critério:
• Selecionamos, em
cada vertical, o pixel
mais próximo do
ponto de intersecção
do segmento com a
reta vertical.
• Vantagens:
aparência leve e
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
27
Figura 5c: 3.º Critério de conversão
matricial de segmentos de reta
Conversão Matricial de
Segmentos de Reta
• 4.º Critério:
• Selecionamos, em
cada horizontal, o
pixel mais próximo
do ponto de
intersecção do
segmento com a reta
horizontal.
• Restrição:
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
28
Figura 5d: 4.º Critério de conversão
matricial de segmentos de reta
Características Desejáveis para
os Algoritmos de conversão
Matricial
de Segmentos de Retas• Linearidade:
• Os pixels traçados devem dar a aparência de que
estão sobre uma reta.
• Isto é trivial no caso de segmentos paralelos aos eixos
x ou y, ou com inclinação de 45 graus, mas não nos
outros casos.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
29
Figura 6: Linearidade
Características Desejáveis para
os Algoritmos de conversão
Matricial
de Segmentos de Retas
• Precisão:
• Os segmentos devem iniciar e terminar nos pontos
especificados.
• Caso isso não ocorra, pequenos gaps podem surgir
entre o final de um segmento e o início de outro.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
30
Figura 7: Precisão
Características Desejáveis para
os Algoritmos de conversão
Matricial
de Segmentos de Retas
• Espessura (Densidade) uniforme:
• A densidade da linha é dada pelo número de pixels
traçados dividido pelo comprimento da linha.
• Para manter a densidade constante, os pixels
devem ser igualmente espaçados.
• A imagem do segmento não varia de intensidade ou
espessura ao longo de sua extensão.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
31
Figura 8: Espessura
Características Desejáveis para
os Algoritmos de conversão
Matricial
de Segmentos de Retas
• Continuidade:
• A imagem não apresenta interrupções
indesejáveis.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
32
Figura 9: Continuidade e Descontinuidade
Características Desejáveis para
os Algoritmos de conversão
Matricial
de Segmentos de Retas
• Intensidade independente da inclinação:
para segmentos de diferentes inclinações
• Rapidez no Traçado dos segmentos.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
33
Conversão Matricial de
Segmentos de Reta
• Os algoritmos que vamos estudar usam o
método incremental, que consiste em
executar os cálculos iterativamente,
mantendo um registro (ou memória) do
progresso da computação a cada passo
da iteração.
• Nesse método, começando por um dos
extremos da linha, o próximo ponto é
calculado e traçado até que o outro
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
34
Conversão Matricial de
Segmentos de Reta
• O problema da conversão matricial consiste
essencialmente em ajustar uma curva, no
caso, um segmento de reta, a qual é
precisamente definida por coordenadas
reais, a uma malha de coordenadas inteiras.
• Isto pode ser feito calculando as
coordenadas reais, (xr, yr), do próximo ponto
na linha, e escolhendo na malha os pixels
cujas coordenadas (x, y) mais se aproximam
das coordenadas reais, obtidos por
arredondamento ou truncamento.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
35
Equação da Reta
• Matematicamente, uma reta pode ser
descrita como:
• Coeficiente Angular (m): relacionado ao
ângulo que a reta faz com o eixo x.
– Para m <=1, a reta faz um ângulo entre 0º e 45º com o eixo
x.
– Para m >1, a reta faz um ângulo entre 45º e 90º com o eixo
x.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
36
𝑦 = 𝑚𝑥 + 𝑏
EQUAÇÃO 1: Equação da Reta
m =
(𝑦2 −𝑦1)
(𝑥2 −𝑥1)
EQUAÇÃO 2: Equação do Coeficiente Angular da Reta (m)
Equação da Reta
• Coeficiente linear (b): dá o valor no eixo y
que é cruzado pela reta.
• Dados os pontos no plano P1 e P2, pode-se
obter m e b, ou seja, a equação da reta que
passa pelos pontos.
• A partir das equações apresentadas para a
reta, pode-se definir algoritmos para
desenhar um segmento de reta a partir de
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
37
𝑏 = 𝑦1 − 𝑚𝑥1
EQUAÇÃO 3: Equação do Coeficiente Linear da Reta (b)
Equação da Reta
• A ideia mais simples para
rasterização de linhas é
determinar a qual valor
inteiro no eixo y, uma reta
se aproxima.
• De modo geral, para cada
valor x, calcula-se o
arredondamento de y.
• Obs.: RASTERIZAÇÃO é a
forma de tratar
vetorialmente imagens na
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
38
Figura 10: Ilustração de uma
reta desenhada entre dois
pontos
Equação da Reta: algoritmo
• Um trecho de código em linguagem C que ilustra a
implementação da ideia mais simples de traçado de reta:
int x, x1, x2, y1, y2, cor;
float y, m;
//coeficiente angular
m = (y2 – y1)/(x2 – x1);
//iteração
for (x = x1; x <= x2; x++) {
//coeficiente linear
y = y1 + m * (x – x2);
//arredonda y e imprime na tela
write_pixel(x, round(y), cor);
}
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
39
Variando-se x
unitariamente, de
pixel em pixel,
encontramos o
valor de y
Equação da Reta: fluxograma
Um fluxograma que
pode ser utilizado
para implementar
uma FUNÇÃO da
ideia simples de
traçado de
segmento de reta
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
40
Figura 11: Fluxograma da
Equação da Reta
Equação da Reta: problema
• Para retas verticais o
algoritmo apresenta uma
falha: Não há um cálculo
dos pontos aproximados
no eixo x, então, o
segmento de reta é
traçado erroneamente na
tela.
• Essa falha é o principal
motivo pelo qual não é
implementada atualmente
essa ideia.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
41
Figura 12: Reta vertical
traçada com buracos
Equação da Reta: problema
• O algoritmo apresentado
só funciona para
segmentos em que 0 < m <
1.
• Se 0 < m < 1 a variação
em x é superior à variação
em y.
• Se esse não for o caso, vai
traçar um segmento com
buracos!!
• Se m > 1, basta inverter os
papéis de x e y
x = x1 + ((y-y1)/m)
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
42
Figura 12: Reta vertical
traçada sem buracos
Equação da Reta: problema
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
43
Linha(x1, x2, y1, y2, cor)
m = (y2 – y1)/(x2 – x1);
Se ( m > 1 )
x1 até x2
y = y1 + m * (x – x2);
write_pixel(x, round(y), cor);
continue
return
x1 até x2
x = x1 + ((y-y1)/m)
write_pixel(x, round(y), cor);
Algoritmo de Bresenham
(1965)
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
44
• ALGORITMO DO PONTO MÉDIO
(MidPointLineAlgorithm)
• O algoritmo de Bresenham trabalha somente com
inteiros
• É mais eficiente pois evita o uso da função de
arredondamento (Round), o que fornece economia de
processamento
• O algoritmo anterior trabalha com numeros de ponto
flutuante (float)
• Baseia-se no argumento de que um segmento de reta,
ao ser plotado, deve ser contínuo, ou melhor, os pixels
Algoritmo de Bresenham
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
45
• Será analisado o caso de m <1, pois para
m>=1, basta inverter as coordenadas x e
y.
• Se m<1, e dado um ponto na reta, o
próximo ponto é (x+1+y) ou (x+1, y+1)?
• O algoritmo de Bresenham responde a
essa questão calculando um valor (p) para
cada pixel, e passando para o pixel
seguinte, até alcançar o último pixel do
Algoritmo de Bresenham
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
46
• Isso fará com que os pontos das retas
sejam próximos não havendo separação
entre os pixels pintados, evitando o erro
produzido pelo algoritmo demonstrado
anteriormente
• Bresenham permite que o cálculo de (xi +
1, yi + 1) seja feito incrementalmente,
usando os cálculos já feitos para (xi, yi).
Algoritmo de Bresenham
• O algoritmo assume
que a inclinação da
linha está entre 0 e 1
• Outras inclinações
podem ser tratadas
por simetria)
• O ponto (x1, y1) é o
inferior esquerdo, e
(x2, y2) é o superior
direito.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
47
Algoritmo de Bresenham
P(xp, yp): ponto inicial
E(xp+1, yp) : pixel
abaixo e à direita
NE(xp+1, yp+1): pixel
acima e à direita
M: localização do ponto
médio
d: valor do ponto médio
Q: ponto de
intersecção entre a reta
e a coluna
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
48
Algoritmo de Bresenham
25/02/2016Prof.ªM.ªElaineCecíliaGatto49
Algoritmo de Bresenham
• Assuma que o pixel
que acabou de ser
selecionado é P, em
(xp, yp)
• O próximo deve ser
escolhido entre o
pixel à direita (pixel
E) e o pixel acima à
direita (NE).
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
50
Algoritmo de Bresenham
• A partir do pixel
inicial, é calculado o
ponto médio entre os
próximos dois pixels
a serem
selecionados
• O escolhido depende
da posição do ponto
médio em relação à
reta
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
51
Algoritmo de Bresenham
• O que se faz é
observar de que lado
da reta está o ponto
M.
• Se M está acima da
reta, o pixel E está
mais próximo da reta
• Se M está abaixo,
NE está mais
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
52
Algoritmo de Bresenham
• Dessa forma, o teste
do ponto-médio
permite a escolha do
pixel mais próximo
da reta.
• O erro é sempre <=
½
• Erro: distância
vertical entre o pixel
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
53
Algoritmo de Bresenham
• Método para calcular de que lado da reta
está o ponto M
• Considere a função implícita da reta:
25/02/2016Prof.ªM.ªElaineCecíliaGatto54
𝐹 𝑥, 𝑦 = 𝑎𝑥 + 𝑏𝑦 + 𝑐 = 0
EQUAÇÃO 4: Função Implícita da Reta
Algoritmo de Bresenham
• Se dy = y2 − y1
• e dx = x2 − x1
• Então, a equação da reta em termos de
sua inclinação pode ser escrita como:
25/02/2016Prof.ªM.ªElaineCecíliaGatto55
𝑦 =
𝑑𝑦
𝑑𝑥
𝑥 + 𝑏
EQUAÇÃO 5: Inclinação da Reta
Algoritmo de Bresenham
• Dessa forma tem-se:
• Em que:
a = dy
b = −dx
c = b.dx
25/02/2016Prof.ªM.ªElaineCecíliaGatto56
𝐹 𝑥, 𝑦 = 𝑑𝑦. 𝑥 − 𝑑𝑥. 𝑦 + 𝑏. 𝑑𝑥 = 0
EQUAÇÃO 6: Reescrita da inclinação da Reta
Algoritmo de Bresenham
• F(x, y) = 0: f(x,y) é igual a zero quando está sobre a
linha
• F(x,y) > 0: é positiva para pontos abaixo da linha
• F(x,y) < 0: é negativa para pontos acima da linha
• Para o teste do ponto-médio, calcular
• e verificar o seu sinal
25/02/2016Prof.ªM.ªElaineCecíliaGatto57
𝐹 𝑀 = 𝐹 𝑥 𝑝 + 1, 𝑦𝑝 +
1
2
EQUAÇÃO 7: Função para calcular o ponto médio
Algoritmo de Bresenham
25/02/2016Prof.ªM.ªElaineCecíliaGatto58
Algoritmo de Bresenham
• Como a decisão será tomada com base no valor da
função no ponto
• definimos uma variável de decisão
25/02/2016Prof.ªM.ªElaineCecíliaGatto59
𝑑 = 𝑎 𝑥 𝑝 + 1 + 𝑏 𝑦 𝑝 +
1
2
+ 𝑐
EQUAÇÃO 8: Variável de Decisão
𝑝𝑜𝑛𝑡𝑜 = 𝑥 𝑝 + 1, 𝑦𝑝 +
1
2
Algoritmo de Bresenham
• d > 0: NE é o pixel escolhido
• d < 0: E é o pixel escolhido
• d = 0: pode-se escolher qualquer um deles
• O que acontece com a localização de M e o valor
de d no próximo ponto da reta?
• Ambos dependem, obviamente, da escolha de E ou
NE.
25/02/2016Prof.ªM.ªElaineCecíliaGatto60
Algoritmo de Bresenham
25/02/2016Prof.ªM.ªElaineCecíliaGatto61
Algoritmo de Bresenham
• Se E for escolhido, M é incrementado de 1 na
direção x, então
• Entretanto
25/02/2016Prof.ªM.ªElaineCecíliaGatto62
𝑑 𝑛𝑒𝑤 = 𝑓(𝑥𝑝 + 2, 𝑦𝑝 +
1
2
) =
= 𝑎 𝑥 𝑝 + 2 + 𝑏 𝑦 𝑝 +
1
2
+ 𝑐
EQUAÇÃO 9: Cálculo do novo ponto da variável de decisão
𝑑 𝑜𝑙𝑑 = 𝑎 𝑥 𝑝 + 1 + 𝑏 𝑦 𝑝 +
1
2
+ 𝑐
Algoritmo de Bresenham
• Subtraindo 𝑑 𝑜𝑙𝑑 de 𝑑 𝑛𝑒𝑤 , para obter a diferença
incremental, tem-se:
• ∆E: é o incremento a ser adicionado depois da escolha
de E
• Em outras palavras, pode-se derivar o valor da variável
de decisão no próximo passo incrementalmente, a partir
do seu valor atual, sem necessidade de calcular F(M)
25/02/2016Prof.ªM.ªElaineCecíliaGatto63
𝑑 𝑛𝑒𝑤 = 𝑑 𝑜𝑙𝑑 + 𝑎
∆𝐸 = 𝑎 = 𝑑𝑦
Algoritmo de Bresenham
• Se NE é escolhido, M é incrementado de 1 em
ambas as direções, x e y
• Portanto, Subtraindo 𝑑 𝑜𝑙𝑑 de 𝑑 𝑛𝑒𝑤, tem-se:
• ∆NE: é o incremento a ser adicionado depois da
escolha de NE
25/02/2016Prof.ªM.ªElaineCecíliaGatto64
𝑑 𝑛𝑒𝑤 = 𝑑𝑜𝑙 𝑑 + 𝑎 + 𝑏
∆𝑁𝐸 = 𝑎 + 𝑏 = 𝑑𝑦 − 𝑑𝑥
Algoritmo de Bresenham
• Para eliminar a fração em d, F é multiplicada por 2.
• Isto multiplica cada constante e a variável de
decisão por 2, mas não afeta o sinal da variável de
decisão, que é o que interessa para o teste do
ponto-médio.
• A aritmética necessária para calcular o valor da
variável de decisão d a cada passo é adição
simples, nenhuma multiplicação é necessária (veja
o fluxograma).
25/02/2016Prof.ªM.ªElaineCecíliaGatto65
𝐹 𝑥, 𝑦 = 2(𝑎𝑥 + 𝑏𝑦 + 𝑐)
Algoritmo de Bresenham
• A figura ao lado
apresenta a reta
que vai do ponto
(5,8) ao ponto
(9,11), traçada por
este algoritmo.
25/02/2016Prof.ªM.ªElaineCecíliaGatto66
Algoritmo de Bresenham:
RESUMO
• A cada passo, o algoritmo escolhe entre 2 pixels,
com base no sinal da variável de decisão calculada
na iteração anterior
• A seguir, a variável de decisão é atualizada
adicionando-se ∆E ou ∆NE ao valor anterior,
dependendo do pixel escolhido
• Como o primeiro pixel corresponde ao ponto (x1,
y1), pode-se calcular diretamente o valor inicial de d
para escolher entre E e NE.
• O primeiro ponto-médio está em (x1 + 1, (y1 + ½) )
25/02/2016Prof.ªM.ªElaineCecíliaGatto67
Algoritmo de Bresenham:
Implementação 1
void bresenham (int x1,int x2, int y1,int y2)
int dx,dy, incSup, incInf, p, x, y;
int valor;
{
dx = x2-x1;
dy = y2-y1;
p = 2*dy-dx; /* fator de decisão: valor inicial */
incInf = 2*dy; /* Incremento Superior */
incSup = 2*(dy-dx); /* Incremento inferior */
x = x1;
y = y1;
write_Pixel(x,y,valor); /* Pinta pixel inicial */
while (x < x2){
if (p <= 0){ /* Escolhe Inferior */
p = p + incInf;
}
else { /* Escolhe Superior */
p = p + incSup;
y++;
} /* maior que 45o */
x++;
write_pixel (x, y, valor);
} /* m do while */
} /* m do algoritmo */
25/02/2016Prof.ªM.ªElaineCecíliaGatto68
Algoritmo de Bresenham:
Implementação 2
procedure midpointLine (x0, y0, x1, y1, value : Integer);
var
dx, dy, incrE, incrNE, d, x, y : Integer;
begin
dx := x1 - x0;
dy := y1 - y0;
d := 2*dy - dx;
incrE := 2*dy;
incrNE:= 2*(dy - dx);
x := x0;
y := y0;
writePixel(x, y, value);
while x < x1 DO
IF d <= 0 THEN
d:= d + incrE;
x:= x + 1; 17
else
d:= d + incrNE;
x:= x + 1;
y:= y + 1;
end;
writePixel(x, y, value);
end;
end midpointLine;
25/02/2016Prof.ªM.ªElaineCecíliaGatto69
Referências
• Ammeral, L. Computação Gráfica para programadores
Java. Rio de Janeiro: LTC, 2008
• Traina, A. J. M.; Oliveira, M. C. F. Apostila de
Computação Gráfica. São Carlos: USP/ICMC, 2006.
Disponível em:
http://www.inf.ufes.br/~thomas/graphics/www/apostilas
/GBdI2006.pdf. Acessado em 22 de Janeiro de 2016.
• Paulovich, F. V. Conversão Matricial. São Paulo:
USP/ICMC, 2011. Disponível em:
http://wiki.icmc.usp.br/images/4/4a/SCC0250-slides-
12-Conversao_matricial.pdf. Acessado em 22 de
Janeiro de 2016
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
70
Referências
• Cavalcanti, J. Computação Gráfica. UNIVAST, 2014. Disponível em:
http://www.univasf.edu.br/~jorge.cavalcanti/comput_graf04_prim_gr
aficas2.pdf. Acessado em 20 de janeiro de 2016.
• Bueno, M. Primitivas Gráficas. Disponível em:
http://marciobueno.com/arquivos/ensino/cg/CG_03_Primitivas_Grafi
cas.pdf. Acessado em 20 de janeiro de 2016.
• Mousquer, J. C.; Kliemann, K. A.; Matrakas, M. D. ALGORITMOS
PARA DESENHAR RETAS E CÍRCULOS. Paraná, Foz do Iguaçu:
FAC. Disponível em:
http://www.udc.edu.br/v5/resources/producoes/SeminarioCientifico2
014/files/CC/01.pdf. Acessado em 20 de Janeiro de 2016.
25/02/2016
Prof.ªM.ªElaineCecíliaGatto
71

Mais conteúdo relacionado

Mais procurados

Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )PeslPinguim
 
Projeto Trigonometria Atualizado
Projeto Trigonometria AtualizadoProjeto Trigonometria Atualizado
Projeto Trigonometria Atualizadobrunomn
 
Lei dos-senos-e-lei-dos-cossenos-aula-07
Lei dos-senos-e-lei-dos-cossenos-aula-07Lei dos-senos-e-lei-dos-cossenos-aula-07
Lei dos-senos-e-lei-dos-cossenos-aula-07André Luís Nogueira
 
Calculo de areas.pdf
Calculo de areas.pdfCalculo de areas.pdf
Calculo de areas.pdfvocho_loko
 
Modelagem - Aula 1
Modelagem - Aula 1Modelagem - Aula 1
Modelagem - Aula 1Joabe Amaral
 
Triangulos de velocidades
Triangulos de velocidadesTriangulos de velocidades
Triangulos de velocidadesjuniorvalente
 
Computação Gráfica: Transformadas Geométricas 2
Computação Gráfica: Transformadas Geométricas 2Computação Gráfica: Transformadas Geométricas 2
Computação Gráfica: Transformadas Geométricas 2Elaine Cecília Gatto
 
Notas de aula de metrologia prof
Notas de aula de metrologia profNotas de aula de metrologia prof
Notas de aula de metrologia profgetulio Rodrigues
 
Referencialcartesiano
ReferencialcartesianoReferencialcartesiano
Referencialcartesiano7f14_15
 
Calculo de-roscas
Calculo de-roscasCalculo de-roscas
Calculo de-roscasdmarkys
 
NotasdeInvestigacao Operacional2022UNISAVEA1EAD2022E.pdf
NotasdeInvestigacao Operacional2022UNISAVEA1EAD2022E.pdfNotasdeInvestigacao Operacional2022UNISAVEA1EAD2022E.pdf
NotasdeInvestigacao Operacional2022UNISAVEA1EAD2022E.pdfLuis87782
 
Algoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco MínimoAlgoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco MínimoGabriel Albuquerque
 
Sequencia didatica - Sistema de numeracao - 6º ano
Sequencia didatica - Sistema de numeracao - 6º anoSequencia didatica - Sistema de numeracao - 6º ano
Sequencia didatica - Sistema de numeracao - 6º anoandrezafariam
 
Ladrilhos pitagóricos
Ladrilhos pitagóricosLadrilhos pitagóricos
Ladrilhos pitagóricoslicaliquinha
 
Tabela derivadas-e-integrais
Tabela derivadas-e-integraisTabela derivadas-e-integrais
Tabela derivadas-e-integraismariasousagomes
 

Mais procurados (20)

Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )
 
03 torneamento
03 torneamento03 torneamento
03 torneamento
 
Projeto Trigonometria Atualizado
Projeto Trigonometria AtualizadoProjeto Trigonometria Atualizado
Projeto Trigonometria Atualizado
 
Lei dos-senos-e-lei-dos-cossenos-aula-07
Lei dos-senos-e-lei-dos-cossenos-aula-07Lei dos-senos-e-lei-dos-cossenos-aula-07
Lei dos-senos-e-lei-dos-cossenos-aula-07
 
Calculo de areas.pdf
Calculo de areas.pdfCalculo de areas.pdf
Calculo de areas.pdf
 
Modelagem - Aula 1
Modelagem - Aula 1Modelagem - Aula 1
Modelagem - Aula 1
 
Triangulos de velocidades
Triangulos de velocidadesTriangulos de velocidades
Triangulos de velocidades
 
Computação Gráfica: Transformadas Geométricas 2
Computação Gráfica: Transformadas Geométricas 2Computação Gráfica: Transformadas Geométricas 2
Computação Gráfica: Transformadas Geométricas 2
 
03 notação científica
03  notação científica03  notação científica
03 notação científica
 
Notas de aula de metrologia prof
Notas de aula de metrologia profNotas de aula de metrologia prof
Notas de aula de metrologia prof
 
Referencialcartesiano
ReferencialcartesianoReferencialcartesiano
Referencialcartesiano
 
Calculo de-roscas
Calculo de-roscasCalculo de-roscas
Calculo de-roscas
 
Variaveis complexas
Variaveis complexasVariaveis complexas
Variaveis complexas
 
NotasdeInvestigacao Operacional2022UNISAVEA1EAD2022E.pdf
NotasdeInvestigacao Operacional2022UNISAVEA1EAD2022E.pdfNotasdeInvestigacao Operacional2022UNISAVEA1EAD2022E.pdf
NotasdeInvestigacao Operacional2022UNISAVEA1EAD2022E.pdf
 
Sistemas lineares
Sistemas linearesSistemas lineares
Sistemas lineares
 
Algoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco MínimoAlgoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco Mínimo
 
Sequencia didatica - Sistema de numeracao - 6º ano
Sequencia didatica - Sistema de numeracao - 6º anoSequencia didatica - Sistema de numeracao - 6º ano
Sequencia didatica - Sistema de numeracao - 6º ano
 
Ladrilhos pitagóricos
Ladrilhos pitagóricosLadrilhos pitagóricos
Ladrilhos pitagóricos
 
Funções
FunçõesFunções
Funções
 
Tabela derivadas-e-integrais
Tabela derivadas-e-integraisTabela derivadas-e-integrais
Tabela derivadas-e-integrais
 

Semelhante a Traçado de primitivas gráficas em dispositivos matriciais

Semelhante a Traçado de primitivas gráficas em dispositivos matriciais (20)

Aula 10 11 - terceira dimensao
Aula 10 11 - terceira dimensaoAula 10 11 - terceira dimensao
Aula 10 11 - terceira dimensao
 
Aula 10 11 - terceira dimensao
Aula 10 11 - terceira dimensaoAula 10 11 - terceira dimensao
Aula 10 11 - terceira dimensao
 
Vetor
VetorVetor
Vetor
 
Autocad 3 d
Autocad 3 dAutocad 3 d
Autocad 3 d
 
Apostila autocad 3_d
Apostila autocad 3_dApostila autocad 3_d
Apostila autocad 3_d
 
Apostila autocad 3_d
Apostila autocad 3_dApostila autocad 3_d
Apostila autocad 3_d
 
Apostila autocad 3_d
Apostila autocad 3_dApostila autocad 3_d
Apostila autocad 3_d
 
Apostila autocad 3_d
Apostila autocad 3_dApostila autocad 3_d
Apostila autocad 3_d
 
Apostila autocad 3_d
Apostila autocad 3_dApostila autocad 3_d
Apostila autocad 3_d
 
tg
tgtg
tg
 
Apostilatcncfanuc21i
Apostilatcncfanuc21i Apostilatcncfanuc21i
Apostilatcncfanuc21i
 
RADIOLOGIA DIGITAL
RADIOLOGIA DIGITALRADIOLOGIA DIGITAL
RADIOLOGIA DIGITAL
 
Fotogrametria digital
Fotogrametria digitalFotogrametria digital
Fotogrametria digital
 
CGPI Aula 27/08/2018
CGPI Aula 27/08/2018CGPI Aula 27/08/2018
CGPI Aula 27/08/2018
 
QGIS 2.4: Sistemas de Referência de Coordenadas (SRC)
QGIS 2.4: Sistemas de Referência de Coordenadas (SRC)QGIS 2.4: Sistemas de Referência de Coordenadas (SRC)
QGIS 2.4: Sistemas de Referência de Coordenadas (SRC)
 
Elementary Circuits Enumeration in Graphs
Elementary Circuits Enumeration in GraphsElementary Circuits Enumeration in Graphs
Elementary Circuits Enumeration in Graphs
 
Qgis24 sistema_de_referencia_de_coordenadas
 Qgis24 sistema_de_referencia_de_coordenadas Qgis24 sistema_de_referencia_de_coordenadas
Qgis24 sistema_de_referencia_de_coordenadas
 
H.264 / MPEG-4 AVC
H.264 / MPEG-4 AVCH.264 / MPEG-4 AVC
H.264 / MPEG-4 AVC
 
Cinematica de robôs
Cinematica de robôsCinematica de robôs
Cinematica de robôs
 
Analisador de vibrações - Modo de funcionamento VI
Analisador de vibrações - Modo de funcionamento VIAnalisador de vibrações - Modo de funcionamento VI
Analisador de vibrações - Modo de funcionamento VI
 

Mais de Elaine Cecília Gatto

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaElaine Cecília Gatto
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaElaine Cecília Gatto
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Elaine Cecília Gatto
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCElaine Cecília Gatto
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxElaine Cecília Gatto
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Elaine Cecília Gatto
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarElaine Cecília Gatto
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesElaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationElaine Cecília Gatto
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfElaine Cecília Gatto
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Elaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoElaine Cecília Gatto
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsElaine Cecília Gatto
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoElaine Cecília Gatto
 

Mais de Elaine Cecília Gatto (20)

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcação
 

Último

Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdflucassilva721057
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfMárcio Azevedo
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - DissertaçãoMaiteFerreira4
 
VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptxMarlene Cunhada
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfMarianaMoraesMathias
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxTainTorres4
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESEduardaReis50
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 

Último (20)

Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdf
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdf
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - Dissertação
 
VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptx
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 

Traçado de primitivas gráficas em dispositivos matriciais

  • 1. TRAÇADO EM DISPOSITIVOS GRÁFICOS MATRICIAIS PRIMITIVAS GRÁFICAS: PONTOS, RETAS, CIRCULOS, ELIPSES, POLÍGONOS Prof.ª Elaine Cecília Gatto 25/02/2016Prof.ªM.ªElaineCecíliaGatto1
  • 2. Resolução Gráfica • Virtualmente todos os dispositivos de I/O gráficos usam uma malha retangular de posições endereçáveis – a qual é denominada “retângulo de visualização”. • A “resolução gráfica” de um dispositivo é o número de posições (ou pontos, ou pixels) horizontais e verticais que ele pode distinguir. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 2
  • 3. Resolução Gráfica • Existem 4 parâmetros que definem a resolução: 1. ndh: o número de posições endereçáveis horizontalmente 2. ndv: o número de posições endereçáveis verticalmente 3. width: a largura do retângulo de visualização em mm 4. height - a altura do retângulo de visualização em 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 3
  • 4. Resolução Gráfica • A partir desses 4 parâmetros, vários números interessantes podem ser calculados: 1. resolução horizontal: horiz_res = ndh/width 2. resolução vertical: vert_res = ndv/height 3. total pontos endereçáveis: total_nr_dots = ndh.ndv 4. resolução de área: area_res = total_nr_dots / (width.height) 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 4
  • 5. Sistemas de Coordenadas • Na CG é necessário definir sistemas de coordenadas para quantificar os dados que estão • sendo manipulados. • Já vimos que os dispositivos de visualização gráfica matriciais consistem de uma matriz de pixels endereçáveis, e um gráfico é formado “acendendo” ou “apagando” um pixel. • Os pixels são endereçados por dois números inteiros que dão suas coordenadas horizontal 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 5
  • 6. Sistemas de Coordenadas • Número da coluna da matriz de pixels: dcx + 1 • Número da linha da matriz de pixels: dcy + 1 • O pixel endereçado como (0, 0) está geralmente no canto inferior esquerdo do retângulo de visualização • As coordenadas (dcx, dcy) são chamadas de coordenadas do dispositivo, e podem assumir apenas valores inteiros. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 6
  • 7. Sistemas de Coordenadas • Coordenadas do dispositivo podem variar bastante para diferentes equipamentos, o que levou à utilização de coordenadas normalizadas do dispositivo (NDC - normalized device coordinates), para efeito de padronização (ndcx, ndcy). • NDCs são variáveis reais, geralmente definidas no intervalo de 0 a 1 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 7
  • 8. Sistemas de Coordenadas • A coordenada NDC(0,0) corresponde à origem (0, 0) nas coordenadas do dispositivo • A coordenada NDC(1,1) refere-se ao pixel no canto superior direito • A vantagem da utilização de NDCs é que padrões gráficos podem ser discutidos usando um sistema de coordenadas independente de dispositivos gráficos específicos. • Obviamente, os dados gráficos precisam ser transformados do sistema de coordenadas independente para o sistema de coordenadas do dispositivo no momento 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 8
  • 9. Sistemas de Coordenadas • Sistema de cordenadas físico (pcx, pcy) • pcx: distância física ao longo do eixo x a partir do extremo esquerdo do retângulo de visualização • pcy: a distância física ao longo do eixo y a partir do extremo inferior. • As unidades de medida utilizadas são polegadas ou milímetros 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 9
  • 10. Sistemas de Coordenadas • Sistema de coordenadas do mundo • Ou sistema de coordenadas do usuário • Consiste de coordenadas cartesianas (x, y), num intervalo qualquer definido pelo usuário • Os parâmetros que definem o intervalo de valores de x e y, xmin, ymin, xmax e ymax, definem uma área retangular no espaço bidimensional, denominada de janela 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 10
  • 11. Sistemas de Coordenadas • Para visualizar dados num dispositivo gráfico qualquer, é necessário transformá-los das coordenadas do usuário para NDCs, e de NDCs para coordenadas do dispositivo. • Da mesma forma, dados de entrada gráficos precisam ser transformados de coordenadas do dispositivo para NDCs, e depois para coordenadas do usuário 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 11
  • 13. Traçado • O traçado de primitivas gráficas elementares, como segmentos de reta ou arcos de circunferência, requer a construção de algoritmos capazes de determinar na matriz de pixels da superfície de exibição, quais pixels devem ser alterados de forma a simular-se a aparência do elemento gráfico desejado. • Estes algoritmos recebem o nome de Algoritmos de Conversão Matricial, por converterem em representação matricial 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 13
  • 14. Traçado • Um elemento geométrico básico a ser traçado num terminal gráfico é o segmento de reta. • Atualmente, é comum que rotinas de traçado de linhas estejam disponíveis em hardware (em chips controladores). • O chip recebe as coordenadas dos pixels extremos, e calcula quais pixels intermediários da superfície de exibição 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 14
  • 15. Traçado • Gráficos complexos requerem o traçado de uma grande quantidade de segmentos de reta, e a velocidade é importante • Daí a opção de traçado por meio de hardware especializado, que libera o processador hospedeiro para outras atividades enquanto o chip controlador calcula os pixels a serem traçados. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 15
  • 16. Traçado • Se a função de traçado precisa ser implementada em software, a rotina deve ser escrita em código de máquina otimizado para atingir o máximo de velocidade. • Entretanto, é instrutivo estudar alguns algoritmos para traçado de linhas usando uma linguagem de alto nível. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 16
  • 17. Simetria e Reflexão 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 17 Figura 2: Representação de segmentos de reta horizontais, verticais e diagonais
  • 18. Simetria e Reflexão • Simetria e Reflexão são propriedades importantes do espaço onde os diversos elementos gráficos serão traçados. • Pode-se dizer que estas direçõe formam na realidade eixos de simetria no espaço matricial. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 18
  • 19. Simetria e Reflexão • Logo, qualquer imagem representada no espaço matricial pode ser refletida em relação a qualquer reta horizontal, vertical ou diagonal sem apresentar qualquer deformação • A Simetria é explorada na conversão matricial de primitivas gráficas que apresentem simetria e relação a qualquer um destes eixos. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 19
  • 20. Simetria e Reflexão 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 20 Figura 3: Reflexão de uma imagem com relação a um eixo diagonal
  • 21. Simetria e Reflexão 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 21 Figura 4a: Rotação de 90 graus obtida através de 2 reflexões, uma horizontal (a) e outra na diagonal (b).
  • 22. Simetria e Reflexão 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 22 Figura 4b: Rotação de 90 graus obtida através de 2 reflexões, uma horizontal (a) e outra na diagonal (b).
  • 23. Ponto • Um PONTO em CG como é um pixel, cujas propriedades são: – Posição no plano – Cor • O tamanho do pixel vai depender da resolução gráfica e tamanho físico do dispositivo de exibição da imagem. • As operações de manipulação de pixels representam uma das essências da CG, pois a partir dessa manipulação, imagens são construídas ou alteradas. • Os elementos gráficos mais complexos exigem uma sequência de ações para que possam ser construídos 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 23
  • 24. Conversão Matricial de Segmentos de Reta 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 24 Figura 5: Alguns critérios de conversão matricial podem ser vistos através desta figura
  • 25. Conversão Matricial de Segmentos de Reta • 1.º Critério: • Selecionamos os dois pixels imediatamente acima e abaixo do ponto de intersecção ao do segmento com cada vertical, a menos quando o segmento passa por um pixel. • Restrição: linhas densas são obtidas, como se o segmento fosse espesso 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 25 Figura 5a: 1.º Critério de conversão matricial de segmentos de reta
  • 26. Conversão Matricial de Segmentos de Reta • 2.º Critério: • Selecionamos todos os pixels cujas coordenadas são obtidas arredondando- se os valores das coordenadas de algum ponto do segmento. • Restrição: com segmentos a 45 graus, este critério produz resultados semelhantes ao 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 26 Figura 5b: 2.º Critério de conversão matricial de segmentos de reta
  • 27. Conversão Matricial de Segmentos de Reta • 3.º Critério: • Selecionamos, em cada vertical, o pixel mais próximo do ponto de intersecção do segmento com a reta vertical. • Vantagens: aparência leve e 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 27 Figura 5c: 3.º Critério de conversão matricial de segmentos de reta
  • 28. Conversão Matricial de Segmentos de Reta • 4.º Critério: • Selecionamos, em cada horizontal, o pixel mais próximo do ponto de intersecção do segmento com a reta horizontal. • Restrição: 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 28 Figura 5d: 4.º Critério de conversão matricial de segmentos de reta
  • 29. Características Desejáveis para os Algoritmos de conversão Matricial de Segmentos de Retas• Linearidade: • Os pixels traçados devem dar a aparência de que estão sobre uma reta. • Isto é trivial no caso de segmentos paralelos aos eixos x ou y, ou com inclinação de 45 graus, mas não nos outros casos. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 29 Figura 6: Linearidade
  • 30. Características Desejáveis para os Algoritmos de conversão Matricial de Segmentos de Retas • Precisão: • Os segmentos devem iniciar e terminar nos pontos especificados. • Caso isso não ocorra, pequenos gaps podem surgir entre o final de um segmento e o início de outro. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 30 Figura 7: Precisão
  • 31. Características Desejáveis para os Algoritmos de conversão Matricial de Segmentos de Retas • Espessura (Densidade) uniforme: • A densidade da linha é dada pelo número de pixels traçados dividido pelo comprimento da linha. • Para manter a densidade constante, os pixels devem ser igualmente espaçados. • A imagem do segmento não varia de intensidade ou espessura ao longo de sua extensão. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 31 Figura 8: Espessura
  • 32. Características Desejáveis para os Algoritmos de conversão Matricial de Segmentos de Retas • Continuidade: • A imagem não apresenta interrupções indesejáveis. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 32 Figura 9: Continuidade e Descontinuidade
  • 33. Características Desejáveis para os Algoritmos de conversão Matricial de Segmentos de Retas • Intensidade independente da inclinação: para segmentos de diferentes inclinações • Rapidez no Traçado dos segmentos. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 33
  • 34. Conversão Matricial de Segmentos de Reta • Os algoritmos que vamos estudar usam o método incremental, que consiste em executar os cálculos iterativamente, mantendo um registro (ou memória) do progresso da computação a cada passo da iteração. • Nesse método, começando por um dos extremos da linha, o próximo ponto é calculado e traçado até que o outro 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 34
  • 35. Conversão Matricial de Segmentos de Reta • O problema da conversão matricial consiste essencialmente em ajustar uma curva, no caso, um segmento de reta, a qual é precisamente definida por coordenadas reais, a uma malha de coordenadas inteiras. • Isto pode ser feito calculando as coordenadas reais, (xr, yr), do próximo ponto na linha, e escolhendo na malha os pixels cujas coordenadas (x, y) mais se aproximam das coordenadas reais, obtidos por arredondamento ou truncamento. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 35
  • 36. Equação da Reta • Matematicamente, uma reta pode ser descrita como: • Coeficiente Angular (m): relacionado ao ângulo que a reta faz com o eixo x. – Para m <=1, a reta faz um ângulo entre 0º e 45º com o eixo x. – Para m >1, a reta faz um ângulo entre 45º e 90º com o eixo x. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 36 𝑦 = 𝑚𝑥 + 𝑏 EQUAÇÃO 1: Equação da Reta m = (𝑦2 −𝑦1) (𝑥2 −𝑥1) EQUAÇÃO 2: Equação do Coeficiente Angular da Reta (m)
  • 37. Equação da Reta • Coeficiente linear (b): dá o valor no eixo y que é cruzado pela reta. • Dados os pontos no plano P1 e P2, pode-se obter m e b, ou seja, a equação da reta que passa pelos pontos. • A partir das equações apresentadas para a reta, pode-se definir algoritmos para desenhar um segmento de reta a partir de 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 37 𝑏 = 𝑦1 − 𝑚𝑥1 EQUAÇÃO 3: Equação do Coeficiente Linear da Reta (b)
  • 38. Equação da Reta • A ideia mais simples para rasterização de linhas é determinar a qual valor inteiro no eixo y, uma reta se aproxima. • De modo geral, para cada valor x, calcula-se o arredondamento de y. • Obs.: RASTERIZAÇÃO é a forma de tratar vetorialmente imagens na 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 38 Figura 10: Ilustração de uma reta desenhada entre dois pontos
  • 39. Equação da Reta: algoritmo • Um trecho de código em linguagem C que ilustra a implementação da ideia mais simples de traçado de reta: int x, x1, x2, y1, y2, cor; float y, m; //coeficiente angular m = (y2 – y1)/(x2 – x1); //iteração for (x = x1; x <= x2; x++) { //coeficiente linear y = y1 + m * (x – x2); //arredonda y e imprime na tela write_pixel(x, round(y), cor); } 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 39 Variando-se x unitariamente, de pixel em pixel, encontramos o valor de y
  • 40. Equação da Reta: fluxograma Um fluxograma que pode ser utilizado para implementar uma FUNÇÃO da ideia simples de traçado de segmento de reta 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 40 Figura 11: Fluxograma da Equação da Reta
  • 41. Equação da Reta: problema • Para retas verticais o algoritmo apresenta uma falha: Não há um cálculo dos pontos aproximados no eixo x, então, o segmento de reta é traçado erroneamente na tela. • Essa falha é o principal motivo pelo qual não é implementada atualmente essa ideia. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 41 Figura 12: Reta vertical traçada com buracos
  • 42. Equação da Reta: problema • O algoritmo apresentado só funciona para segmentos em que 0 < m < 1. • Se 0 < m < 1 a variação em x é superior à variação em y. • Se esse não for o caso, vai traçar um segmento com buracos!! • Se m > 1, basta inverter os papéis de x e y x = x1 + ((y-y1)/m) 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 42 Figura 12: Reta vertical traçada sem buracos
  • 43. Equação da Reta: problema 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 43 Linha(x1, x2, y1, y2, cor) m = (y2 – y1)/(x2 – x1); Se ( m > 1 ) x1 até x2 y = y1 + m * (x – x2); write_pixel(x, round(y), cor); continue return x1 até x2 x = x1 + ((y-y1)/m) write_pixel(x, round(y), cor);
  • 44. Algoritmo de Bresenham (1965) 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 44 • ALGORITMO DO PONTO MÉDIO (MidPointLineAlgorithm) • O algoritmo de Bresenham trabalha somente com inteiros • É mais eficiente pois evita o uso da função de arredondamento (Round), o que fornece economia de processamento • O algoritmo anterior trabalha com numeros de ponto flutuante (float) • Baseia-se no argumento de que um segmento de reta, ao ser plotado, deve ser contínuo, ou melhor, os pixels
  • 45. Algoritmo de Bresenham 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 45 • Será analisado o caso de m <1, pois para m>=1, basta inverter as coordenadas x e y. • Se m<1, e dado um ponto na reta, o próximo ponto é (x+1+y) ou (x+1, y+1)? • O algoritmo de Bresenham responde a essa questão calculando um valor (p) para cada pixel, e passando para o pixel seguinte, até alcançar o último pixel do
  • 46. Algoritmo de Bresenham 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 46 • Isso fará com que os pontos das retas sejam próximos não havendo separação entre os pixels pintados, evitando o erro produzido pelo algoritmo demonstrado anteriormente • Bresenham permite que o cálculo de (xi + 1, yi + 1) seja feito incrementalmente, usando os cálculos já feitos para (xi, yi).
  • 47. Algoritmo de Bresenham • O algoritmo assume que a inclinação da linha está entre 0 e 1 • Outras inclinações podem ser tratadas por simetria) • O ponto (x1, y1) é o inferior esquerdo, e (x2, y2) é o superior direito. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 47
  • 48. Algoritmo de Bresenham P(xp, yp): ponto inicial E(xp+1, yp) : pixel abaixo e à direita NE(xp+1, yp+1): pixel acima e à direita M: localização do ponto médio d: valor do ponto médio Q: ponto de intersecção entre a reta e a coluna 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 48
  • 50. Algoritmo de Bresenham • Assuma que o pixel que acabou de ser selecionado é P, em (xp, yp) • O próximo deve ser escolhido entre o pixel à direita (pixel E) e o pixel acima à direita (NE). 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 50
  • 51. Algoritmo de Bresenham • A partir do pixel inicial, é calculado o ponto médio entre os próximos dois pixels a serem selecionados • O escolhido depende da posição do ponto médio em relação à reta 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 51
  • 52. Algoritmo de Bresenham • O que se faz é observar de que lado da reta está o ponto M. • Se M está acima da reta, o pixel E está mais próximo da reta • Se M está abaixo, NE está mais 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 52
  • 53. Algoritmo de Bresenham • Dessa forma, o teste do ponto-médio permite a escolha do pixel mais próximo da reta. • O erro é sempre <= ½ • Erro: distância vertical entre o pixel 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 53
  • 54. Algoritmo de Bresenham • Método para calcular de que lado da reta está o ponto M • Considere a função implícita da reta: 25/02/2016Prof.ªM.ªElaineCecíliaGatto54 𝐹 𝑥, 𝑦 = 𝑎𝑥 + 𝑏𝑦 + 𝑐 = 0 EQUAÇÃO 4: Função Implícita da Reta
  • 55. Algoritmo de Bresenham • Se dy = y2 − y1 • e dx = x2 − x1 • Então, a equação da reta em termos de sua inclinação pode ser escrita como: 25/02/2016Prof.ªM.ªElaineCecíliaGatto55 𝑦 = 𝑑𝑦 𝑑𝑥 𝑥 + 𝑏 EQUAÇÃO 5: Inclinação da Reta
  • 56. Algoritmo de Bresenham • Dessa forma tem-se: • Em que: a = dy b = −dx c = b.dx 25/02/2016Prof.ªM.ªElaineCecíliaGatto56 𝐹 𝑥, 𝑦 = 𝑑𝑦. 𝑥 − 𝑑𝑥. 𝑦 + 𝑏. 𝑑𝑥 = 0 EQUAÇÃO 6: Reescrita da inclinação da Reta
  • 57. Algoritmo de Bresenham • F(x, y) = 0: f(x,y) é igual a zero quando está sobre a linha • F(x,y) > 0: é positiva para pontos abaixo da linha • F(x,y) < 0: é negativa para pontos acima da linha • Para o teste do ponto-médio, calcular • e verificar o seu sinal 25/02/2016Prof.ªM.ªElaineCecíliaGatto57 𝐹 𝑀 = 𝐹 𝑥 𝑝 + 1, 𝑦𝑝 + 1 2 EQUAÇÃO 7: Função para calcular o ponto médio
  • 59. Algoritmo de Bresenham • Como a decisão será tomada com base no valor da função no ponto • definimos uma variável de decisão 25/02/2016Prof.ªM.ªElaineCecíliaGatto59 𝑑 = 𝑎 𝑥 𝑝 + 1 + 𝑏 𝑦 𝑝 + 1 2 + 𝑐 EQUAÇÃO 8: Variável de Decisão 𝑝𝑜𝑛𝑡𝑜 = 𝑥 𝑝 + 1, 𝑦𝑝 + 1 2
  • 60. Algoritmo de Bresenham • d > 0: NE é o pixel escolhido • d < 0: E é o pixel escolhido • d = 0: pode-se escolher qualquer um deles • O que acontece com a localização de M e o valor de d no próximo ponto da reta? • Ambos dependem, obviamente, da escolha de E ou NE. 25/02/2016Prof.ªM.ªElaineCecíliaGatto60
  • 62. Algoritmo de Bresenham • Se E for escolhido, M é incrementado de 1 na direção x, então • Entretanto 25/02/2016Prof.ªM.ªElaineCecíliaGatto62 𝑑 𝑛𝑒𝑤 = 𝑓(𝑥𝑝 + 2, 𝑦𝑝 + 1 2 ) = = 𝑎 𝑥 𝑝 + 2 + 𝑏 𝑦 𝑝 + 1 2 + 𝑐 EQUAÇÃO 9: Cálculo do novo ponto da variável de decisão 𝑑 𝑜𝑙𝑑 = 𝑎 𝑥 𝑝 + 1 + 𝑏 𝑦 𝑝 + 1 2 + 𝑐
  • 63. Algoritmo de Bresenham • Subtraindo 𝑑 𝑜𝑙𝑑 de 𝑑 𝑛𝑒𝑤 , para obter a diferença incremental, tem-se: • ∆E: é o incremento a ser adicionado depois da escolha de E • Em outras palavras, pode-se derivar o valor da variável de decisão no próximo passo incrementalmente, a partir do seu valor atual, sem necessidade de calcular F(M) 25/02/2016Prof.ªM.ªElaineCecíliaGatto63 𝑑 𝑛𝑒𝑤 = 𝑑 𝑜𝑙𝑑 + 𝑎 ∆𝐸 = 𝑎 = 𝑑𝑦
  • 64. Algoritmo de Bresenham • Se NE é escolhido, M é incrementado de 1 em ambas as direções, x e y • Portanto, Subtraindo 𝑑 𝑜𝑙𝑑 de 𝑑 𝑛𝑒𝑤, tem-se: • ∆NE: é o incremento a ser adicionado depois da escolha de NE 25/02/2016Prof.ªM.ªElaineCecíliaGatto64 𝑑 𝑛𝑒𝑤 = 𝑑𝑜𝑙 𝑑 + 𝑎 + 𝑏 ∆𝑁𝐸 = 𝑎 + 𝑏 = 𝑑𝑦 − 𝑑𝑥
  • 65. Algoritmo de Bresenham • Para eliminar a fração em d, F é multiplicada por 2. • Isto multiplica cada constante e a variável de decisão por 2, mas não afeta o sinal da variável de decisão, que é o que interessa para o teste do ponto-médio. • A aritmética necessária para calcular o valor da variável de decisão d a cada passo é adição simples, nenhuma multiplicação é necessária (veja o fluxograma). 25/02/2016Prof.ªM.ªElaineCecíliaGatto65 𝐹 𝑥, 𝑦 = 2(𝑎𝑥 + 𝑏𝑦 + 𝑐)
  • 66. Algoritmo de Bresenham • A figura ao lado apresenta a reta que vai do ponto (5,8) ao ponto (9,11), traçada por este algoritmo. 25/02/2016Prof.ªM.ªElaineCecíliaGatto66
  • 67. Algoritmo de Bresenham: RESUMO • A cada passo, o algoritmo escolhe entre 2 pixels, com base no sinal da variável de decisão calculada na iteração anterior • A seguir, a variável de decisão é atualizada adicionando-se ∆E ou ∆NE ao valor anterior, dependendo do pixel escolhido • Como o primeiro pixel corresponde ao ponto (x1, y1), pode-se calcular diretamente o valor inicial de d para escolher entre E e NE. • O primeiro ponto-médio está em (x1 + 1, (y1 + ½) ) 25/02/2016Prof.ªM.ªElaineCecíliaGatto67
  • 68. Algoritmo de Bresenham: Implementação 1 void bresenham (int x1,int x2, int y1,int y2) int dx,dy, incSup, incInf, p, x, y; int valor; { dx = x2-x1; dy = y2-y1; p = 2*dy-dx; /* fator de decisão: valor inicial */ incInf = 2*dy; /* Incremento Superior */ incSup = 2*(dy-dx); /* Incremento inferior */ x = x1; y = y1; write_Pixel(x,y,valor); /* Pinta pixel inicial */ while (x < x2){ if (p <= 0){ /* Escolhe Inferior */ p = p + incInf; } else { /* Escolhe Superior */ p = p + incSup; y++; } /* maior que 45o */ x++; write_pixel (x, y, valor); } /* m do while */ } /* m do algoritmo */ 25/02/2016Prof.ªM.ªElaineCecíliaGatto68
  • 69. Algoritmo de Bresenham: Implementação 2 procedure midpointLine (x0, y0, x1, y1, value : Integer); var dx, dy, incrE, incrNE, d, x, y : Integer; begin dx := x1 - x0; dy := y1 - y0; d := 2*dy - dx; incrE := 2*dy; incrNE:= 2*(dy - dx); x := x0; y := y0; writePixel(x, y, value); while x < x1 DO IF d <= 0 THEN d:= d + incrE; x:= x + 1; 17 else d:= d + incrNE; x:= x + 1; y:= y + 1; end; writePixel(x, y, value); end; end midpointLine; 25/02/2016Prof.ªM.ªElaineCecíliaGatto69
  • 70. Referências • Ammeral, L. Computação Gráfica para programadores Java. Rio de Janeiro: LTC, 2008 • Traina, A. J. M.; Oliveira, M. C. F. Apostila de Computação Gráfica. São Carlos: USP/ICMC, 2006. Disponível em: http://www.inf.ufes.br/~thomas/graphics/www/apostilas /GBdI2006.pdf. Acessado em 22 de Janeiro de 2016. • Paulovich, F. V. Conversão Matricial. São Paulo: USP/ICMC, 2011. Disponível em: http://wiki.icmc.usp.br/images/4/4a/SCC0250-slides- 12-Conversao_matricial.pdf. Acessado em 22 de Janeiro de 2016 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 70
  • 71. Referências • Cavalcanti, J. Computação Gráfica. UNIVAST, 2014. Disponível em: http://www.univasf.edu.br/~jorge.cavalcanti/comput_graf04_prim_gr aficas2.pdf. Acessado em 20 de janeiro de 2016. • Bueno, M. Primitivas Gráficas. Disponível em: http://marciobueno.com/arquivos/ensino/cg/CG_03_Primitivas_Grafi cas.pdf. Acessado em 20 de janeiro de 2016. • Mousquer, J. C.; Kliemann, K. A.; Matrakas, M. D. ALGORITMOS PARA DESENHAR RETAS E CÍRCULOS. Paraná, Foz do Iguaçu: FAC. Disponível em: http://www.udc.edu.br/v5/resources/producoes/SeminarioCientifico2 014/files/CC/01.pdf. Acessado em 20 de Janeiro de 2016. 25/02/2016 Prof.ªM.ªElaineCecíliaGatto 71