Sei sulla pagina 1di 19

FACULDADE BRASIL NORTE

PRIMITIVAS GRFICAS

MACAP
2014

PRIMITIVAS GRFICAS

Trabalho apresentado ao Curso de Cincia


da Computao da Faculdade Brasil Norte
como requisito parcial para obteno da
nota final do Curso de Computao Grfica

MACAP
2014

ndice de ilustraes
Ilustrao 1: Par ordenado de um pixel.......................................................................................6
Ilustrao 2: Obtendo m e b........................................................................................................7
Ilustrao 3: Exemplos de valores..............................................................................................9
Ilustrao 4: Algoritmo DDA......................................................................................................9
Ilustrao 5: Exemplo prtico...................................................................................................11
Ilustrao 6: Polilinha................................................................................................................11
Ilustrao 7: Polgono...............................................................................................................12
Ilustrao 8: Crculo..................................................................................................................13
Ilustrao 9: Definio de crculo.............................................................................................13
Ilustrao 10: Traado de um crculo........................................................................................14
Ilustrao 11: Expresses de um crculo...................................................................................14
Ilustrao 12: Definio matemtica de uma elipse..................................................................16
Ilustrao 13: Elipse..................................................................................................................16

Sumrio
1 INTRODUO......................................................................................................................5
2 PRIMITIVAS GRFICAS....................................................................................................6
2.1 PONTO ............................................................................................................................6
2.2 LINHAS RETAS .............................................................................................................7
2.2.1 Algoritmos para desenhar retas ............................................................................8
2.2.1.1 Algoritmo DDA (Digital Differential Analyser) ..............................................8
2.2.1.2 Algoritmo de Breseham..................................................................................10
2.2.2 Mtodos para segmentos de retas........................................................................11
2.3 POLILINHAS ...............................................................................................................12
2.3.1 Propriedades da polilinha:...................................................................................12
2.3.2 Propriedades ........................................................................................................13
2.4 CRCULOS....................................................................................................................13
2.4.1 Traado de crculos ..............................................................................................14
2.5 ELIPSES.........................................................................................................................16
2.5.1 Algoritmo do segmento de arcos para confeco da elipse usando funes
trigonomtricas sentido horrio...................................................................................17
3 CONCLUSO......................................................................................................................19

4
1 INTRODUO

Primitivas Grficas so os elementos bsicos que compem um desenho, tais como pontos,
segmentos de retas e crculos, neste trabalho iremos estudar as diferentes primitivas grficas e sua
importncia para o estudo da matria Computao Grfica no Curso de Cincia da Computao.

5
2 PRIMITIVAS GRFICAS

Primitivas Grficas so os elementos bsicos que compem um desenho, tais como pontos,
segmentos de retas e crculos.
Chamamos de primitivas grficas os comandos e funes que manipulam e alteram os
elementos grficos de uma imagem. Tambm entram na definio os elementos bsicos de grficos
a partir dos quais so construdos outros, mais complexos. (Hetem Annibal Jr.,2006, p3).
Primitivas j definidas do origem a novas primitivas:
A polilinha concatenao de vrios segmentos;
O polgono a adequao de uma polilinha;
A circunferncia um caso particular de arco de elipse.
Atributos podem ser associados s primitivas:
O ponto pode ter cor
A linha pode ter espessura, cor, trao;

2.1 PONTO

O ponto a unidade grfica fundamental e tambm pode ser chamada de pixel.


Propriedades de um pixel:
Posio no plano e
Cor.
O tamanho do pixel vai depender da resoluo grfica e tamanho fsico do dispositivo de
exibio da imagem.
As operaes de manipulao de pixeis representam uma das essncias da Computao
Grfica, pois a partir dela, imagens so construdas ou alteradas.

Para se obter um pixel necessrio informar o par ordenado (x,y), que possibilita as
coordenadas de linha e coluna onde ser pintada a grade do vdeo; de acordo com a resoluo
especificada no sistema operacional.

Ilustrao 1: Par ordenado de um


pixel
Os elementos grficos mais complexos que o ponto exigem uma sequncia de aes para
que possam ser construdos.
Para se desenhar um ponto usando C++ usa-se a propriedade Pixels do objeto Canvas.
Exemplo:
Canvas->Pixels[x][y] = RGB(0,0,0);
Onde x coordenada da coluna; e y coordenada da linha a funo RGB determina a cor do
pixel que ser plotado na tela.

2.2 LINHAS RETAS

Para se desenhar uma reta necessrio usar primitivas grficas, onde as primitivas vem a ser
um conjunto de algoritmos para se realizar elementos grficos mais complexos.
Do ponto de vista matemtico, uma reta pode ser descrita como:
y = mx + b

O parmetro m o coeficiente angular, relacionado ao ngulo que a reta faz com o eixo x.
Para m <=1, a reta faz um ngulo entre 0 e 45 graus com o eixo x.
Para m >1, a reta faz um ngulo entre 45 e 90 graus com o eixo x.
O 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 equao da reta que passa
pelos pontos.

Ilustrao 2: Obtendo m e b

2.2.1 Algoritmos para desenhar retas

A partir das equaes apresentadas para a reta, pode-se definir algoritmos para desenhar um
segmento de reta a partir de dois pontos dados.
A partir das equaes apresentadas para a reta, pode-se definir algoritmos para desenhar um
segmento de reta a partir de dois pontos dados.

2.2.1.1 Algoritmo DDA (Digital Differential Analyser)

Trata-se de um algoritmo que respeita as equaes de coeficiente angular e linear mostrados


anteriormente; Porem esse algoritmo torna-se ineficiente em alguns caso mostrando uma certa
descontinuidade nas retas desenhadas.
Assim, para traar uma reta que vai do ponto P1 ao P2, podemos pensar no seguinte

8
algoritmo:
1.Pinta-se o pixel do ponto P1, isto , o pixel de coordenadas (x1,y1), e atribuem-se s
variveis de trabalho (x,y) os valores de (x1,y1).
2.D-se o prximo passo: vai ao pixel seguinte (x,y), onde x<- x+1 e y<-y+m e pinta-se esse
novo pixel.
3.Repete o passo 2 at que o ponto P2 seja alcanado.
O DDA um tpico algoritmo incremental. Algoritmos incrementais so aqueles em que
uma das variveis obtida apenas incrementando o seu valor, por exemplo X = X + 1, e a outra
calculada por alguma regra a partir da primeira.
retaDDA( real : x0, y0, x1, y1)
Inicio
dx <- x1 - x0
dy <- y1 - y0
x <- x0
y <- y0
s <- 0
se (dx > dy) entao
s <- dx
senao
s <- dy
fim_se
xi <- dx / s
yi <- dy / s
Pintap( x,y, cor)
Para x de 0 ate s faca
x <- x + xi
y <- y + yi
Pintap( x,y, cor)
fim_para
fim

Ilustrao 3: Exemplos de valores

Ilustrao 4: Algoritmo DDA

2.2.1.2 Algoritmo de Breseham

O algoritmo de Bresenham (tambm chamado de algoritmo do Ponto Mdio) baseia-se no


argumento de que um segmento de reta, ao ser plotado, deve ser contnuo, ou melhor, os pixels que
compem um segmento de reta devem ser vizinhos.
Isso far com que os pontos das retas sejam prximos no havendo separao entre os
pixels pintados.
O ponto de partida a seguinte pergunta: se m<1 e dado um ponto na reta, o prximo ponto
(x+1,y) ou (x+1, y+1)?
O algoritmo de Bresenham responde a essa questo calculando um valor (p) para cada pixel,
e passando para o pixel seguinte, at alcanar o ltimo pixel do segmento da reta.
Em linguagens modernas esse algoritmo j se encontra implementado e melhorado. No
havendo necessidade de uma nova implementao.

10
retaBreseham (inteiro:x0,y0,x1,y1)
Inicio
MoverAte(x0,y0)
PintarAte(x1,x1)
fim

2.2.2 Mtodos para segmentos de retas

MoveTo() : Determina o ponto inicial para um segmento de reta.


Exemplo :
Canvas->MoveTo(x0,y0);
Determina o ponto final para o segmento de reta.
Exemplo :
Canvas->LineTo(x1,y1);
Exemplo prtico

Canvas->MoveTo(100,100);
Canvas->LineTo(100,200);

Ilustrao 5:
Exemplo
prtico

11

2.3 POLILINHAS

Linhas retas so a base para uma grande variedade de figuras que so compostas por
segmentos de retas.
A maioria desses objetos pode ser desenhada por algoritmos simples que por sua vez chama
o algoritmo de traar retas.
Essa sequncia de retas chamada de polilinha.
2.3.1 Propriedades da polilinha:
1.Composta por n segmentos de reta, sendo n>=1.
2. definida por n+1 pontos.

Ilustrao 6: Polilinha
O algoritmo que desenha uma polilinha deve desenhar um segmento de reta ligando o
primeiro ao segundo ponto, o segundo ao terceiro e assim por diante, at o penltimo e o ltimo
ponto.
Pode-se ainda usar esse mesmo raciocnio para desenhar um polgono, que pode ser descrito
como uma polilinha fechada.

12

Ilustrao 7: Polgono
2.3.2 Propriedades
1.Composto por n segmentos de reta, sendo n>=2.
2. definida por n pontos.
O algoritmo que desenha um polgono deve desenhar um segmento de reta ligando o
primeiro ao segundo ponto, o segundo ao terceiro e assim por diante, at o que se desenhe uma reta
ligando o ltimo ao primeiro ponto, fechando o polgono.
Caso seja definido apenas dois pontos, haver dois segmentos de reta, um indo do primeiro
ponto ao segundo e o outro voltando. No ser desenhado o polgono, mas n=2 satisfaz o
algoritmo .

2.4 CRCULOS

Um circulo vem a ser um conjunto de pontos que esto a uma mesma distncia de um ponto;
essa distncia tambm chamada de raio. E o ponto distante de todos os outros o centro.

Ilustrao 8: Crculo

13

Essa definio no tem como ser usada em computao grfica

pois deseja-se uma

definio do tipo y=f(x) ou x=f(y).


Essas definies podem ser obtidas isolando-se as variveis:

Ilustrao 9: Definio de crculo


A operao + necessria pois a rais pode ser positiva ou negativa.
Para cada valor de x, so obtidos dois valores de y: um para a metade superior do crculo,
outro para a inferior.
Os crculos e os arcos so elementos fundamentais para a computao grfica, para gerao
de curvas e superfcies.
Alm da aplicao grfica, os crculos so essenciais para o aprendizado dos detalhes mais
complexos do traado de curvas atravs dos computadores.

2.4.1 Traado de crculos

As expresses que definem o crculo, apesar de corretas, apresentam dois problemas


evidentes para serem usadas em computao grfica:
Exigem muitos clculos (quadrados e raiz quadrada).
Geram impreciso no traado, pois quando o segmento do crculo fica quase horizontal ou
vertical, um pequeno incremento em x <- x+1 (ou y <- y+1) leva a um salto e o arco apresentar-se-
descontnuo.

14

Ilustrao 10: Traado de


um crculo
Pode-se chegar a uma outra definio de crculos usando o sistema de coordenadas polares.
As novas expresses apresentam pontos de um crculo como funo do raio e de um ngulo.

Ilustrao 11: Expresses de um crculo


Onde um ngulo que varia entre 0 e 2 (em radianos).

dArc(Inteiro:Xc,Yc, raio,Ti,Tf, cor)


Inicio
moverAte(Xc,Yc)
para teta de Ti ate Tf faca
x <- Xc + raio * cos(teta)
y <- Yc + raio * sin(teta)
Pintap(x,y,cor)
fim_para
fim

Xc, Yc Centro Arco


Raio Distncia do centro nos pontos que formam o arco

15
Ti, Tf valores iniciais e finais de
Cor : poder ser trs variveis inteiras para receber valores RGB.

O algoritmo apresentado anteriormente conhecido como funes polares; ir apresentar


falha de preciso quando se aumentar o raio podem tornar imprecises no traado do circulo ou
arco; Para resolver esse problema existe um algoritmo conhecido como ponto mdio para crculos.
Esse algoritmo j se encontra implementado em C++.

Mtodo : Arc() - Desenha crculos e arcos.


Sintaxe :
Arc(Esq,top,Dir,Bai,Dir,Top,Esq,Top)
Exemplo :
Canvas->Arc(100,200,300,400,500,600,700,800);

2.5 ELIPSES

Uma elipse definida como um conjunto de pontos cuja soma das distncias para dois
pontos fixos constantes. Onde os dois pontos fixos so chamados de foco da elipse. Sua definio
matemtica :

Ilustrao 12: Definio matemtica de uma elipse


Onde (x1, y1) e (x2, y2) so as posies dos focos, d1,ed2 so as do ponto P distncia at os
focos.

16

Ilustrao 13: Elipse


Essa definio no tem como ser usada em computao grfica.
Para se obter um algoritmo que satisfaa as definies em computao grfica se faz
necessrio uma definio f(x) e g(y).

rx e ry referem-se aos raios da elipse na direo x e y, (xc, yc) o centro da elipse.

um

ngulo que vria entre 0 e 2


2.5.1 Algoritmo do segmento de arcos para confeco da elipse usando funes
trigonomtricas sentido horrio.
dElipse(Inteiro:Xc,Yc, Rx,Ry,Ti,Tf, cor)
Inicio
moverAte(Xc,Yc)
para teta de Ti ate Tf faca
x <- Xc + Ry * cos(teta)
y <- Yc + Rx * sin(teta)
Pintap(x,y,cor)
fim_para
fim
Xc, Yc Centro Arco

17
Rx, Ry Raio da elipse na direo x e y. Rx < Ry
Ti, Tf valores iniciais e finais de
Cor : poder ser trs variveis inteiras para receber valores RGB
O algoritmo apresentado anteriormente conhecido como funes polares; ir apresentar
falha de preciso quando se aumentar o raio podem tornar imprecises no traado do circulo ou
arco; Para resolver esse problema existe um algoritmo conhecido como ponto mdio para Elipse.
Esse algoritmo j se encontra implementado em C++.
Mtodo : Ellipse() desenha uma elipse nas coordenadas especificadas.
Exemplo : Canvas->Ellipse(Xc,Yc, Rx, Ry);
3 CONCLUSO
As primitivas grficas permitem entender a base do desenho do ponto de vista da
computao grfica. Neste trabalho estudamos as sua sprincipais caractersticas e implementao
assim como exemplos do seu desenho usando a linguagem C++.

18
4 REFERNCIAS
1. CAVALCANTI, Jorge. Computao Grfica. Pernambuco 2013;
2. CRISTINA, Maria. Computao Grfica. So Paulo 2013.

Potrebbero piacerti anche