quinta-feira, 10 de março de 2016

Rasterização de Pontos, Retas e Triângulos.

Descrição:


Este poste faz parte de um trabalho da disciplina Introdução a Computação Gráfica. Nele será abordado o conceito de rasterização, com exemplos de rasterização de pontos, retas e triângulos.

Utilizarei um framework desenvolvido por Christian Azambuja Pagot , professor da disciplina a que se vincula este trabalho. Este framework foi desenvolvido em C++ e contém os seguintes arquivos: • definitions.h, • main.cpp, • main.h, • Makefile, • mygl.h. O framework ira simular o acesso a memória de vídeo para escrita direta pois os sistemas operacionais modernos não permitem acesso direto a esta.

Será criada três funções de rasterização, listadas abaixo:

PutPixel: Função que rasteriza um pixel na tela.
DrawLine: Função que rasteriza um conjunto de pixel na tela, formando linhas.
DrawTriangle: Função que rasteriza três linhas, formando triângulos.
Estas funções serão criadas no arquivo mygl.h.

Dependências A compilação do projeto exige que os cabeçalhos do OpenGL e a GLUT (The OpenGL Toolkit) estejam instalados.

Definições:


Rasterização: 

O processo de converter uma imagem vetorial em uma imagem raster (pontos ou píxel) para a saída em vídeo.

Framebuffer:

Região da memória responsável por armazenar os dados da imagem que será representada no monitor.


Estrutura:

typedef struct{
    int R;
    int G;
    int B;
    int A
}color;

typedef struct{
    color cor;
    int x;
    int y;
}ponto;

Funções:

- void putpixel(ponto p, color cor);

O putpixel() é responsável por acender um pixel na tela, tem como parâmetros as coordenadas x e y que localizam o pixel na tela e os inteiros r,g,b,a que são responsáveis por darem cor ao ponto.

- void drawLine(ponto p1, ponto p2);

DrawLine usa o algoritmo de Bresenham para calcular onde serão pintados os pixels , usa o putpixel para pintar os pixels, formando uma linha do ponto inicial até o ponto final.

void drawTriangle(ponto x1,ponto x2, ponto x3);
DrawTriangle chama o algoritimo drawLine() para formas as linhas que formarão o triangulo.