FACULDADE FARIAS BRITO CIÊNCIA DA...

27
FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃO RÔMULO JOSÉ DE LUCENA CASTRO FILHO CONSTRUÇÃO DE UM MODELADOR DE CURVAS E SUPERFÍCIES DE BÈZIER FORTALEZA - 2007

Transcript of FACULDADE FARIAS BRITO CIÊNCIA DA...

Page 1: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

FACULDADE FARIAS BRITO

CIÊNCIA DA COMPUTAÇÃO

RÔMULO JOSÉ DE LUCENA CASTRO FILHO

CONSTRUÇÃO DE UM MODELADOR DE CURVAS E

SUPERFÍCIES DE BÈZIER

FORTALEZA - 2007

Page 2: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

RÔMULO JOSÉ DE LUCENA CASTRO FILHO

CONSTRUÇÃO DE UM MODELADOR DE CURVAS E

SUPERFÍCIES DE BÈZIER

Monografia apresentada para obtenção dos créditos da disciplina Trabalho de Conclusão do Curso da Faculdade Farias Brito, como parte das exigências para graduação no Curso de Ciência da Computação.

Orientadora: Profª. Drª. Wietske Ineke Meyering.

FORTALEZA – 2007

Page 3: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

CONSTRUÇÃO DE UM MODELADOR DE CURVAS E

SUPERFÍCIES DE BÈZIER

Rômulo José de Lucena Castro Filho

PARECER _____________________

Data: ____/____/_________

BANCA EXAMINADORA:

___________________________________

Nome e titulação

(Orientador)

___________________________________

Nome e titulação

(Examinador)

___________________________________

Nome e titulação

(Examinador)

Page 4: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

RESUMO

Pierre Bèzier foi um engenheiro francês do ramo automobilístico e desenvolveu métodos

matemáticos para implementar algoritmos que o ajudassem a projetar melhor os modelos

geométricos que ele pretendia apresentar à sua equipe. Este trabalho propõe a construção de

um modelador tridimensional de curvas e superfícies utilizando as formalidades matemáticas

idealizadas por aquele cientista. Espera-se que isso dê àqueles que ainda não tiveram contato

com a parte mais matemática da Computação Gráfica a oportunidade de nutrir um maior

interesse pela área.

Page 5: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

SUMÁRIO

1 INTRODUÇÃO..................................................................................................7

1 METODOLOGIA................................................................................................10

1.1 Aspectos matemáticos................................................................................... 10

1.2 Aspectos computacionais..............................................................................12

2 RESULTADOS .................................................................................................. 19

CONCLUSÃO.........................................................................................................24

Possibilidades futuras .........................................................................................24

Considerações finais ...........................................................................................25

3 REFERÊNCIAS ..................................................................................................26

Page 6: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

LISTA DE FIGURAS

Figura 1 Exemplo da interface na definição de uma spline ..........................................

12

Figura 2 Diagrama de classes .......................................................................................

18

Figura 3 Exemplo de spline ..........................................................................................

20

Figura 4 Exemplo simples de superfície, com alterações basicamente nas

componentes z dos pontos de controle ...................................................... 21

Figura 5 Exemplo de superfície mais complexa, com alterações aleatórias nas três

direções: x, y e z ........................................................................................ 22

Figura 6 Superfície e curvas desenhadas juntas ............................................................

23

Page 7: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

1 INTRODUÇÃO

Este trabalho pode ser considerado um estudo em Modelagem Geométrica, uma

subárea da Computação Gráfica, esta já mais conhecida do público em geral devido ao grande

avanço dos sistemas gráficos e sua disseminação atual, tanto em jogos como em qualquer outro

campo moderno da informação.

A Modelagem Geométrica pode ser definida como um conjunto de métodos que

visam a descrever a forma e as características geométricas de um objeto. Ela, em

geral, é utilizada no desenvolvimento de uma descrição ou modelo analítico,

matemático, abstrato, na tentativa de representar o real. A criação de modelos possibilita o

estudo ou a simulação de situações reais com conveniência e economia, o que denota o imenso

valor didático que a Modelagem Geométrica adquire. Ela pode ser utilizada desde a

representação da aerodinâmica de automóveis e aviões, até imagens médicas, perpassando

assim praticamente todos os campos do conhecimento humano moderno. A modelagem é o

ingrediente básico de sistemas CAD/CAM, computadores gráficos, arte por computador, visão

por computador, simulação, robótica e animação.

Avanços em quaisquer destes campos, de certa forma, dependem de quão bem

definidos estão os modelos geométricos criados. Métodos de modelagem geométrica são uma

síntese de técnicas de muitas áreas como cálculo vetorial, geometria analítica e descritiva,

teoria de conjuntos, análise numérica e matemática matricial, entre outras. Esta combinação de

ferramentas matemáticas com a complexidade dos modelos geométricos requer grande esforço

computacional.

Neste trabalho, no entanto, deu-se ênfase ao processo de construção de um

modelador de curvas e superfícies de Bèzier, que é uma das inúmeras técnicas utilizadas nesse

Page 8: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

8

vasto campo da Modelagem Geométrica e, por conseguinte, da Computação Gráfica. Na

confecção do trabalho, são contemplados determinados aspectos matemáticos da Computação

Gráfica.

Ao empreender este esforço, acredita-se estar tendo a oportunidade de divulgar

uma técnica importante para o campo em que ela se insere, desta forma fomentando o

desenvolvimento de posteriores trabalhos nessa área. Assim, através da construção de um

modelador de curvas e superfícies de Bèzier, visa-se à obtenção resultados condizentes com a

proposta de despertar o interesse de estudantes e profissionais para as áreas de Modelagem

Geométrica e Computação Gráfica como um todo.

A técnica utilizada tem seu nome em homenagem a seu criador, Pierre Étienne

Bézier (1910 – 1999), francês e engenheiro da fabricante de automóveis Renault S.A. Ele

desenvolveu curvas e superfícies que pudessem ajudá-lo no projeto dos automóveis da

empresa. As curvas de Bèzier fazem parte do grupo de curvas definidas a partir de pontos de

controle – as chamadas splines. Por conseguinte, as superfícies, extensões das curvas em duas

direções – usualmente chamadas de u e v, também dependem de pontos de controle, que são

em geral fornecidos ao programa modelador de acordo com necessidades pré-estabelecidas.

Aplicativos de desenho modernos utilizam as técnicas de Bèzier como ferramenta –

como é o caso CorelDRAW®, que possui o Bèzier Tool. Há ainda constantes estudos com

intuito de aperfeiçoar as técnicas de Bèzier, entre os quais podemos citar o HBC (Half-way

shifting Bèzier Curve), que incorpora automaticamente informações locais às várias regiões da

curva, aumentando a potência dela, sem custo computacional adicional considerável (SOHEL

et al., 2007).

Propõe-se, assim, a construção de um modelador de curvas e superfícies de Bèzier

de terceiro grau (3 x 3, no caso das superfícies). Esse grau foi o escolhido por tratar-se daquele

mais utilizado corriqueiramente nas aplicações gráficas, sendo ainda de relativamente simples

implementação. Quando um grau acima do terceiro é escolhido, a implementação torna-se

consideravelmente mais complexa e computacionalmente cara, uma vez que serão mais pontos

de controle a serem considerados, computados e devidamente posicionados (HEARN &

BAKER, 2003), além disso, torna-se extremamente poderosa a ferramenta que utiliza equações

cúbicas na modelagem de suas curvas e superfícies e as concatena. Isso significa juntar várias

Page 9: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

9

curvas e superfícies de grau não tão elevado (por exemplo, três, como neste caso). Fazendo-se

isso, obtém-se entidades geométricas de baixo custo computacional, mas grande aplicabilidade

e versatilidade. Dessa forma, parece a melhor escolha para o presente trabalho.

Este trabalho de conclusão de curso dividir-se-á nas seguintes seções: esta

introdução; a metodologia, em que são descritos os detalhes técnicos da confecção do projeto

(como linguagem de programação utilizada e aspectos matemáticos contemplados), um

capítulo de resultados, em que será apresentado o que foi obtido na confecção do projeto

proposto e a conclusão, onde o projeto é encerrado.

Page 10: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

10

1 METODOLOGIA

O presente trabalho envolve eminentemente aspectos de duas grandes áreas:

Matemática e Computação. Nesse sentido, os esforços foram divididos cronologicamente na

obtenção, em ambas as áreas, da maturidade necessária para atingir o objetivo vislumbrado

nesta monografia. Primeiro, visou-se à solidificação do background matemático imprescindível

à segunda parte, que foi quando se investiu na implementação do programa modelador em si.

1.1 Aspectos matemáticos

A metodologia, como citado, inclui base teórica matemática, para aplicação de

alguns aspectos necessários à implementação proposta, isto é, para a construção do modelador.

Estudou-se de modo intenso a teoria das curvas, sua transformação em superfícies e as nuanças

e particularidades da técnica proposta por Pierre Bèzier (1972).

Sobre os métodos utilizados por Bèzier, pode-se observar que a idéia principal de

seu trabalho é construir curvas que se aproximam dos pontos de controle, as chamadas

approximation splines (HEARN & BAKER, 2003). Isso significa que as curvas de Bèzier

pertencem a uma categoria de curvas que se aproximam de uma curva teórica do gráfico da

função interpolada nos pontos de controle.

Aprofundando-se um pouco na explanação em termos matemáticos, pode-se

apontar a utilização do algoritmo do matemático ucraniano Sergei Natanovich Bernstein (1880

- 1968) nos métodos apreciados neste trabalho (FARIN, 2002). Abaixo representado para o

grau n está o algoritmo de Bernstein:

Page 11: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

11

.,...,0,)1()(,

nvvnxvxv

nx

nvb

(eq. 1.1)

Onde

k

n é o coeficiente binomial.

Bèzier (1972) utilizou o algoritmo de Bernstein para representar a influência que

cada ponto de controle terá sobre a curva construída. Um ponto parametrizado em t no espaço

conveniente para a portabilidade, entre 0 e 1 (isto é, 0 representa o início da curva; e 1, o final),

seria assim representado para n pontos de controle:

.1,0,...11

1 110

01

tttt

nt

i

nt n

nniin

i

n

iPPPttPB (eq. 1.2)

Ou seja, um somatório da influência de cada ponto de controle iP , onde i varia de 0

a n, onde n é o grau que deseja-se que a curva tenha. Como citamos na introdução do presente

trabalho, as curvas modeladas pelo programa construído juntamente com este trabalho, são de

terceiro grau – cúbicas -, logo, cada ponto parametrizado é representado por:

.1,0,22

13)1( 3

3

2

1

3

0 13 tttttt PttPPPB (eq. 1.3)

Para as superfícies, como duas dimensões parametrizadas – u e v - têm que ser

contempladas, serão dois somatórios “aninhados”. Um ponto p(u,v) genérico em uma

superfície seria representado por:

kBBp ji

m

j

n

i

m

j

n

ivuvu

,0 0

,

(eq. 1.4)

Onde uBn

i é o algoritmo de Bernstein variando de i a n para um parâmetro

genérico u e k ji , representa os pontos de controle nas direções u e v, aqui simbolizadas por i e

j. Deve-se lembrar oportunamente que, se para uma curva de grau n são necessários n+1

pontos de controle, para uma superfície de grau n x m, necessitam-se de (n+1) x (m+1) pontos

de controle, o que justifica o fato de i variar de 0 a n, e j varia de 0 a m na representação acima.

Page 12: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

12

1.2 Aspectos computacionais

Em um segundo momento, veio a implementação, que inclui, num projeto como

este, desde a escolha da linguagem de programação a ser utilizada até os pacotes adicionais e a

interface em si do projeto.

Do ponto de vista da programação, foi utilizada a linguagem C++, por oferecer

desempenho satisfatório nesse tipo de aplicação, já que é uma linguagem voltada para o alto

desempenho, apesar de seu alto nível. Para a modelagem respectivamente da interface e da

renderização, utilizaram-se as bibliotecas wxWidgets e OpenGL, ambas freeware (isto é, de

acesso público livre, sem necessidade de pagamento de direitos autorais), bem como o

compilador utilizado, o Dev-C++, no ambiente operacional Microsoft Windows XP. Interface é

a parte do programa em que o usuário tem a oportunidade de interagir com ele. Neste caso, é a

parte em que o usuário pode dizer quantas retas quer que sejam desenhadas para representar a

curva ou dizer onde deve ficar cada ponto ou mesmo a interação em que o usuário pode utilizar

o mouse para dar zoom, rotacionar ou transladar a tela. Na figura 1, vê-se um exemplo da

interface, no momento em que o usuário pode definir uma spline a ser desenhada.

Fig. 1 – Exemplo da interface na definição de uma spline

Page 13: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

13

É oportuno que se exemplifique o funcionamento do programa neste ponto: ao

inserir os pontos numa caixa de diálogo como a mostrada na figura 1, o usuário teria iniciado a

construção de uma spline. O que acontece, então, será ilustrado com algumas linhas do código-

fonte.

A função point, da classe Spline3D, transcrita abaixo, é a responsável pela

construção do ponto a ser desenhado, recebendo como parâmetro o t, resultado do

processamento feito pela função draw (também transcrita abaixo), que, dependendo do número

de partições definido pelo usuário, chamará a função point a cada desenho das retas que

constróem a spline.

Point3D Spline3D::point(double parameter)

{

Point3D point;

double x, y, z;

x = y = z = 0.0;

Abaixo vê-se a eq. 1.3 implementada. Cada elemento x, y e z dos pontos a serem

desenhados é construído como somatório cujas parcelas são produtos das coordenadas

inseridas pelo usuário pelo algoritmo de Bernstein (eq. 1.1), que está implementado na função

blend:

for (int i = 0; i < 4; i++)

{

double b = blend(i, parameter);

x += points[i]->getX()*b;

y += points[i]->getY()*b;

z += points[i]->getZ()*b;

}

point.setX(x);

point.setY(y);

point.setZ(z);

return point;

Page 14: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

14

}

void Spline3D::draw()

{

Point3D newPoint = point(0.0);

Line3D line;

line.setWidth(width);

line.setColor(color.getR(), color.getG(), color.getB());

for(int i = 1; i <= partitionsCount; i++)

{

double t = (double) i / (double) partitionsCount;

Point3D oldPoint = newPoint;

newPoint = point(t);

line.setPin(oldPoint);

line.setPfin(newPoint);

line.draw();

}

}

Função blend transcrita, exemplificando como a eq.1.1 é implementada.

double BezierSpline3D::blend(int k, double parameter)

{

double total = 0.0;

if (k == 0)

{

total = pow(1.0 - parameter, 3.0);

}

else if (k == 1)

{

Page 15: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

15

total = 3.0 * parameter * pow(1.0 - parameter, 2.0);

}

else if (k == 2)

{

total = 3.0 * pow(parameter, 2.0) * (1.0 - parameter);

}

else if (k == 3)

{

total = pow(parameter, 3.0);

}

return total;

}

Discorrendo sucintamente acerca de aspectos exclusivamente programacionais,

pode-se citar: como estrutura de dados utilizou-se uma lista para splines e outra para

superfícies, ambas do header List.h, da biblioteca STL (JAMSA & KLANDER, 1999). Cada

vez que o usuário insere os dados na caixa de diálogo (vide figura 1) para que seja desenhada

uma spline, esta tanto é desenhada na tela como seus dados (como a posição dos pontos de

controle) são armazenados na lista citada. O mesmo acontece no caso das superfícies, que são

armazenadas na sua lista. Assim, sempre que a função de desenho é chamada para renderizar,

isto é desenhar, as curvas e superfícies no canvas, que é a parte preta (neste caso) da tela em

que serão mostradas as figuras, as listas que as armazenam são percorridas e todas as estruturas

armazenadas são desenhadas, o que oferece ao programa uma boa perspectiva para trabalhos

futuros mais complexos envolvendo vários objetos ao mesmo tempo.

Uma curva é desenhada, em geral, com várias retas. É isso que a função de desenho

implementada faz. A curva é dividida (particionada) em um número de retas (no espaço de 0 a

1 citado), que pode ser escolhido pelo usuário. Após essa escolha, cada reta é desenhada de um

ponto até o próximo correspondente nas equações apresentadas na seção anterior. Desse modo,

quanto mais alto o número de partições escolhido, mais próximo de uma curva real estará a

representação, o que, no entanto, implica maior custo computacional.

Page 16: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

16

Foram implementadas funções que possibilitam efetuar, ao se clicar e arrastar o

mouse no canvas, rotação, zoom e translação, mediante a escolha de uma dessas funções com

um prévio clique com o botão direito no próprio canvas. No mesmo menu que possibilita essa

escolha, pode-se também voltar a “câmera”, isto é, a visão do observador, para seu local de

origem. Pode-se ainda optar por exibirem-se ou não os pontos de controle, o grid e o eixo.

Detalhando a maneira como a implementação foi feita, é pertinente que se cite que

o trabalho está bem segmentado (procurou-se seguir os preceitos da Orientação a Objetos (OO)

(JAMSA & KLANDER, 1999)), de modo que a utilização de seus componentes em separado

fica facilitada (o que é bom para possíveis incrementos futuros).

A classe principal para o funcionamento do programa, SMFrame, é a responsável

pela instanciação de janelas, a partir da qual o próprio frame, isto é, a janela em que todo o

programa aparece, principal é criado a cada vez que o executável do programa é iniciado.

Criou-se uma classe (SMCanvas) para o canvas, em que seus componentes, como

cores e tamanho, são atributos.

Cada caixa de diálogo é um objeto instanciado da classe SMSplineDialog ou

SMSurfaceDialog, a depender de o que se deseja criar, respectivamente, uma spline ou uma

superfície.

Cada vez que se clica em “ok” na caixa de diálogo, um objeto da classe

BezierSpline3D (no caso da caixa de diálogo como da figura 1, ou seja, para instanciar

splines) é criado, o mesmo acontece quando se faz o processo análogo para superfícies, mas,

neste caso, é instanciado um objeto da classe BezierSurface3D. As listas, já citadas

anteriormente, são portanto de objetos dessas duas classes, assim, elas armazenam todos os

atributos definidos nelas.

Há ainda várias outras classes, principalmente relacionadas às possíveis figuras

geométricas que podem ser incorporadas ao trabalho no futuro. Por exemplo, todas as classes

de figuras são subclasses da classe Shape3D. As classes Point3D, Line3D, Curve3D (cujo

objeto pode representar um conjunto de splines concatenadas), Spline3D e Surface3D herdam

Page 17: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

17

de Shape3D. As classes BezierSpline3D e BezierSurface3D são subclasses de,

respectivamente, Spline3D e Surface3D.

Assim, torna-se intuitivo o entendimento de como o processo de construção das

figuras se dá. Ao ser desenhada, uma curva, Spline3D, representa a instanciação de várias

retas, objetos da classe Line3D. Os pontos de controle da curva são objetos da classe

SplinePoint3D, subclasse da Point3D e assim por diante.

Para maiores detalhes acerca da hierarquia de classes, olhar o diagrama de classes

na figura 2.

Page 18: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

18

Fig. 2 – Diagrama de classes

Page 19: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

19

3 RESULTADOS

O resultado obtido foi um programa gráfico, conforme as intenções iniciais do

projeto. Portanto, trata-se de um software capaz de, a partir das informações iniciais fornecidas

pelo usuário, modelar (e desenhar na tela) curvas e superfícies de Bèzier. As informações

iniciais incluem o número de partições que a curva ou superfície deve ter, isto é, o número de

retas que serão desenhadas para representar a curva ou cada curva da superfície.

Neste capítulo, serão apresentados alguns screenshots do programa.

Na figura 3, vê-se uma spline representada com seus pontos de controle (esferas),

unidas por retas em vermelho que delimitam o chamado convex hull (HEARN & BAKER,

2003), ou fecho convexo, entidade geométrica que delimita as curvas e superfícies de Bèzier.

Observe-se que se implementou também um eixo tridimensional (eixo z em azul, y em verde e

x em vermelho) e um grid para servirem de referência para as modelagens.

Page 20: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

20

Fig. 3 - Exemplo de spline

Page 21: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

21

Na figura 4, vê-se uma superfície com alterações basicamente na componente z dos

pontos de controle, de modo a ficar levemente abaulada, apenas para efeito de demonstração.

Ressalte-se, no entanto, a grande plasticidade que essas superfícies podem assumir,

dependendo apenas do modo como os pontos de controle são definidos, o que se pode observar

na próxima figura.

Fig. 4 - Exemplo simples de superfície, com alterações basicamente nas componentes z dos pontos de controle.

Page 22: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

22

Na figura 5, vê-se um exemplo da versatilidade desse tipo de superfície. Alteraram-

se as componentes x, y e z de cada ponto de controle, de modo a obter-se um resultado que

demonstrasse como objetos de arquitetura extremamente complexa podem ser modelados com

essa técnica.

Fig. 5 - Exemplo de superfície mais complexa, com alterações aleatórias nas três direções: x, y e z

Page 23: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

23

Na figura 6, pode-se perceber o que foi citado na seção de aspectos

computacionais: várias estruturas podem ser desenhadas ao mesmo tempo e processadas de

acordo com as necessidades do programador, já que todas ficam guardadas nas listas criadas.

Vêem-se uma superfície e três curvas, juntamente com o grid e o eixo.

Fig. 6 - Superfície e curvas desenhadas juntas

Page 24: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

24

CONCLUSÃO

Possibilidades futuras

Há inúmeras possibilidades para um trabalho como este. Um modo interessante de

aproveitá-lo, por exemplo, é fazê-lo tornar-se parte de um programa gráfico maior que o utilize

total ou parcialmente como rotina, em meio a outras rotinas que desenhem outros tipos de

curvas e superfícies, bem como eventuais outras entidades geométricas.

Existe ainda a interessante possibilidade de expandir-se o programa, incorporando

a ele outras funcionalidades, como a modelagem de outros tipos de figuras, outras técnicas de

modelagem geométrica, de modo a torná-lo mais funcional, robusto e independente.

É interessante que se ressaltem alguns aspectos do trabalho que podem ser alvo de

abordagem futura, servindo para aperfeiçoar este trabalho ou outros na mesma área: as curvas e

superfícies implementadas, como citado em momento oportuno, são apenas do terceiro grau.

Não há a possibilidade de se definirem pontos para as curvas ou superfícies apenas se clicando

no canvas, o que torna difícil a determinação de uma figura geométrica da exata forma que se

espera. Os pontos são inseridos em uma caixa de diálogo, e, no caso das superfícies, o número

de variáveis torna-se particularmente alto, já que, para cada um dos 16 pontos (como citado,

são (n + 1) (m +1) pontos, para uma superfície de grau n x m), tem-se que determinar as três

dimensões, x, y e z.

Page 25: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

25

Considerações finais

Por fim, é pertinente observar que este trabalho pode ser visto como um ponto de

partida para vários outros. Por um lado, ele é um estudo em Computação Gráfica; por outro,

um início de implementação de um programa de modelagem gráfica. Início porque, apesar de

os objetivos iniciais terem sido contemplados, eles eram modestos, suficientes apenas para um

trabalho acadêmico em nível de graduação. Sendo necessários complementos relacionados à

implementação de outras técnicas de modelagem para que ele se torne um modelador

realmente aplicável a interesses mais exigentes, como a utilização por empresas que trabalham

com processamento de imagens ou qualquer outra área que demande a utilização de

modeladores poderosos.

O que definitivamente dispensa qualquer questionamento é a utilidade prática como

aprendizado que um projeto do nível deste oferece. A maturidade que se obtém ao longo das

fases de um trabalho que envolve revisão bibliográfica nas área matemática e computacional,

além da programação, é, sem dúvida, um bom complemento à formação adquirida durante todo

o curso de graduação.

Page 26: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

26

3 REFERÊNCIAS

BÈZIER, Pierre. Numerical control: mathematics and applications. John Wiley

and Sons Ltd, 1972.

FARIN, Gerald; HANSFORD, Dianne. The Essentials of CAGD. 1st Edition, AK

Peters, Ltd. 2000.

FARIN, Gerald. Curves and Surfaces for Computer-Aided Geometric Design:

A Practical Guide, 5th Edition, Morgan Kaufmann, 2002.

HEARN, Donald; BAKER, Pauline. Computer Graphics. 3 th Edition., Prentice

Hall, 2003.

JAMSA, Kris; KLANDER, Lars. Programando em C/C++ - A Bíblia. São Paulo:

Pearson Education do Brasil, 1999.

SOHEL, F.A.; DOOLEY, L.S.; KARMAKAR, G.C. A Novel Half-Way Shifting

Bezier Curve Model. Disponível em:

<http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4084913>. Acesso em: 23 jun 2007.

URLs:

http://www.corel.com/servlet/Satellite/us/en/Content/1153321237159 (último

acesso: 22/06/2007)

http://www.wxwidgets.org/ (último acesso: 21/06/2007)

Page 27: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20072-romulo-jose-de-lucena-castro-filho.pdfingrediente básico de sistemas CAD/CAM, computadores

27

http://www.opengl.org/ (último acesso: 21/06/2007)

http://www.ic.uff.br/~aconci/sweeping.html (último acesso: 03/11/2007)