Você está na página 1de 12

Adriana Geraldo Jequecene

Amina Geraldo Jequecene


Helénio Filipe Fernando
Rabeca Jonh Kaunda
Shaquila Michel Cadango

Resumo

Rasterização da Recta
Rasterização da circuferência

Licenciatura em Informática

Universidade Pedagógica

Maputo

2019
Adriana Geraldo Jequecene
Amina Geraldo Jequecene
Helénio Filipe Fernando
Rabeca Jonh Kaunda
Shaquila Michel Cadango

Resumo

Rasterização da Recta
Rasterização da circuferência

Trabalho da cadeira de Computação


Gráfica a ser entregue no
Departamento de informática no
âmbito de avaliação

Professora: Arlete Ferrão

Universidade Pedagógica

Maputo

2019
1

Rasterização

Em geral pode ser aplicado a qualquer processo pelo qual informações vector podem ser
convertidas num formato raster.

1. Rasterização de um segmento de recta


1.1. Rasterização de segmento de recta usando o método directo (algoritmo directo)

O algoritmo imediato para a rasterização de segmentos de recta parte da equação da recta que

suporta o segmento, cuja expressão é: 𝑦 = 𝑚𝑥 + 𝑐

1º. Achamos os valores de: dx, dy.

dx= x2-x1 dy= y2-y1

2º. Para seguimento de recta cujos os extremos das coordenadas são (x1,x2) e (y1,y2) é
essencial que se calcule os valores de b, y, x, e m:

𝑚 = 𝑦2−𝑦1/𝑥2−𝑥1 ou

m=dx/dy

y= m*x+b

b= y-m*x

x = y-b/m

3º. se dx<0, fica:

x=x1;

y=y2;

xf=x1

4º. Se m<=1 então:


x incrementa: x=x+1 e
Y é calculado: y=m*x+b.

Se m>=1 fica: y incrementa: y=y+1

x é calculado: x= y-b/m.
2

algoritimo

1.2. Rasterização de segmento de recta usando o método DDA ( Digital Differential


Analiser)

Pode-se melhorar o desempenho da rasterização de segmentos de recta se diminuirmos o


número de operações matemáticas envolvidas.

1º. calcular os valores de : dx, dy.

dx= x2-x1 dy= y2-y1

2º. Para seguimento de recta cujos os extremos das coordenadas são (x1,x2) e (y1,y2) é
essencial que se calcule os valores de b e m em:

𝑚 = y-b/x y= m*x+b b= y-m*x

3º. No intervalo de x ≤x2 consideremos:

Se m<=1 e se dx<0 então: x incrementa: x=x+1;


3

y é calculado: y=y+m.

Se dx>0 , teremos: x decrementa: x--

y calcula-se: y=y-m.

Caso contrário : Se m<=1 e se dy>0, fica

y incrementa: y++; x é calculado: x= x+1/m.

Se dy<0 fica y decrementa: y--; x calcula-se: x=x-1/m.

Algoritmo

1.3. Algoritmo de Bresenham para a rasterização de segmento de recta

O algoritmo de Bresenham realiza a rasterização de segmentos de recta empregando apenas


operações de aritmética de inteiros e, portanto, permite um maior desempenho. o algoritmo
baseia-se no critério do ponto médio.

Para determinar a posição do ponto médio em relação à recta, consideremos a forma implícita
da equação de uma recta, que é: f (x,y)= ax+bx+c.
4

1º. determinar os valores de dx, dy, d, s, t.

𝑑𝑥 = 𝑥2 − 𝑥1 𝑑𝑦 = 𝑦2 − 𝑦1 d= 2dy-dx 𝒔 = 𝟐(𝒅𝒚 − 𝒅𝒙) 𝒔=


𝟐 ∗ 𝒅𝒚

2º.
 se escolhemos s:

𝒙𝒊+𝟏 = 𝒙𝒊 + 𝟏 𝒚𝒊+𝟏 = 𝒚𝒊

 se escolhemos o t:

𝒙𝒊+𝟏 = 𝒙𝒊 + 𝟏 𝒚𝒊+𝟏 = 𝒚𝒊 +1

3º. Repetir os passos seguintes enquanto x < x2: x incrementa e 𝒅 = 𝒅 + 𝒔.

Se x ≥ x2 , y incrementa e 𝒅 = 𝒅 + 𝒕.

4º. Se 𝒅 ≥ 𝟎 , então: 𝒅𝒊+𝟏 = 𝒅 + 𝟐(𝒅𝒚 − 𝒅𝒙)

Se 𝒅 < 𝟎 , então : 𝒅𝒊+𝟏 = 𝒅 + 𝟐 ∗ 𝒅𝒚

Algoritmo em c++
5

2. Rasterização da circunferência

Uma circunferência de círculo, ou simplesmente circunferência, é definida como sendo o


conjunto dos pontos que estão a uma mesma distância de um ponto central.

A distância é o raio (r) da circunferência e o ponto eqüidistante a todos os outros é o centro


da circunferência (h, k).

2.1.Rasterização da circuferência usando o método polinomial (agoritmo


polinomial)

Uma circuferência pode ser definida pela seguinte equação polinomial: 𝒚𝟐 = 𝒓𝟐 − 𝒙𝟐 , onde r
é o raio da circuferência.

Equação da circuferência : 𝒚 = √𝒓𝟐 + 𝒙𝟐

Para rasterizar a circuferência usando o método polinomial seguimos os seguintes


passos:

1º. Inicializar r , h e k centro da circuferência.

(x,y)=(0,0)

𝟏
i=floor( + 𝟎, 𝟓)
√𝟐

𝒓
𝒙𝒇 =
√𝟐

2º. Verificar se toda a circuferência foi ou não rasterizada.


Se x>𝒙𝒇 , parar a rasterização.

3º. Calcular e validar de y, usando a formula:

𝒚 = √𝒓𝟐 + 𝒙𝟐

4º. Desenhar os pontos de simetria.


6

(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+1.

Algoritmo

2.2.Rasterização da circuferência usando o método polar ou trigonométrico


Uma circuferência pode ser definida mediante o uso de funções trigonométricas:
x = r*cos(𝜽)
y = r*sen(𝜽)
𝟏
i=floor( + 𝟎, 𝟓)
√𝟐
7

Onde: 𝜽 é o angulo corrente e r é o raio da circunferência.


𝜋
Com o método o valor 𝜽 vária, ou seja, é incrementado de 0 ate 4 E cada valor de x e

y é calculado.
Para rasterização usando este método seguimos o seguinte organograma:

1. Inicialize o r (raio), h,k (centro da circunferência) :


(x,y) =(0,0)
𝟏
i=floor( + 𝟎, 𝟓)
√𝟐
𝝅
𝜽𝒊 = 𝟎 𝒆 𝜽𝒇𝒊𝒏𝒂𝒍 =
𝟒

2. Testar se a circunferência foi gerada totalmente:


Se 𝜽> 𝜽𝒇𝒊𝒏𝒂𝒍 A rasterização já esta completa.

3. Calcular os valores de x e y:
𝒙 = 𝒓 ∗ 𝒄𝒐𝒔(𝜽) e 𝒚 = 𝒓 ∗ 𝒔𝒆𝒏(𝜽)

4. Desenhar os pontos de 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 𝜽: 𝜽 = 𝜽 + 𝒊
8

Algoritmo

2.3.Método de Bresenham para a rasterização da circuferência


É um metodo incremental que trabalha com números inteiros.
 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.

Sejam :

𝒅𝒔 = (𝒙𝒊−𝟏 )𝟐 + 𝒚𝒊−𝟏 𝟐 − 𝒓𝟐 e 𝒅𝒕 = (𝒙𝒊−𝟏 + 𝟏)𝟐 + (𝒚𝒊−𝟏 − 𝟏)𝟐 − 𝒓𝟐

Por definição ds>0 e dt≤0. Então :


𝒅 = 𝒅𝒔 + 𝒅𝒕
Isso implica dizer que: d=(𝒙𝒊−𝟏 )𝟐 + 𝒚𝒊−𝟏 𝟐 − 𝒓𝟐 + (𝒙𝒊−𝟏 + 𝟏)𝟐 + (𝒚𝒊−𝟏 − 𝟏)𝟐 − 𝒓𝟐 .
Apartir desta equação e sabendo que (h,k) é (0,r) podemos obter que:
𝒅𝒊𝒏𝒊𝒄𝒊𝒂𝒍 = 𝟑 − 𝟐 ∗ 𝒓
9

 Se d≤0 então sabemos que:


𝒙𝒊+𝟏 = 𝒙𝒊 + 𝒚 e 𝒚𝒊+𝟏 = 𝒚
Usando a recorrencia d podemos determinar que: 𝒅𝒊+𝟏 = 𝒅 + 𝟒𝒙𝒊 + 𝟔

 Se d>0 sabemos que

𝒙𝒊+𝟏 = 𝒙𝒊 + 𝟏 e 𝒚𝒊+𝟏 = 𝒚𝒊 − 𝟏

Utilizando a recorrência d podemos determinar que: 𝒅𝒊+𝟏 = 𝒅 + 𝟒(𝒙𝒊 − 𝒚𝒊 ) + 𝟏𝟎

Para rasterizar a circuferência usando o método de Bresenham seguimos o seguinte


organograma:

1º. Inicialize o r-raio, (h,k) centro da circuferência:

𝒙=𝟎; 𝒚 = 𝒓 ; d=3-2*r.

2º. Verificar se a circuferência foi gerada totalmente:


se x>y, parar a rasterização.

3º. Calcular a localização do próximo pixel:

 Se d<0 então d=d+4*x+6 e x=x+1.


 Se d≥ 𝟎 então d=d+4*(x-y)+10 ; x=x+1; y=y-1;

4º. Desenhar os pontos de 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).
10

Algoritmo

Você também pode gostar