Quarto Projeto - Superfícies


Objetivo

O objetivo deste projeto é implementar um algoritmo que gera superfícies suaves a partir de uma malha poliédrica com uma configuração qualquer. Este algoritmo é apresentado em um artigo publicado no periódico CAD, vol. 10 número 6, em novembro 1978, cuja cópia será distribuída em sala de aula.

A leitura e a interpretação do artigo faz parte do projeto.

Descrição

Os algoritmos de subdivisão constituem uma classe de algoritmos que consegue tratar malhas poliédricas com facetas cujo número de lados seja diferente de 3 e 4. A idéia básica destes algoritmos consiste em "tornear" um objeto poliédrico eliminando sucessivamente os seus cantos e as suas pontas. E. Catmull e J. Clark apresentam no artigo Recursively generated B-Spline surfaces on arbitrary topological meshes um algoritmo que consegue obter este efeito através das subdivisões sucessivas das facetas de um objeto poliédrico. Pode-se mostrar que, com execeção dos denominados pontos extraordinários, as superfícies resultantes convergem para B-Splines biquadráticas ou bicúbicas.

Considerando uma malha poliédrica definida na estrutura de dados do TDM, implemente o algoritmo proposto por E. Catmull e J. Clark com uso da interface funcional do TDM. O protótipo desta rotina deve ser:

blend(int objeto, int numero_de_iteracoes)

O programa subdivide.c demonstra o uso de todas as funcionalidades necessárias para implementação de subdivisões sucessivas. Ele triangulariza a (face) base do cone com número de arestas maior que 3 que foi apresentado no projeto 2. Observe que o programa main do arquivo display.c foi alterado para acomodar a chamada da rotina subdivide após a chamada da rotina cone(n,radius,height,&obj) definida no arquivo cone.c. Os arquivos Makefile e cone.h foram também devidamente atualizados.

Siga o mesmo procedimento apresentado no projeto 2 para gerar o executável destes arquivos.

Utilize os programas do projeto 2 para gerar os seguintes modelos iniciais em TDM e teste a sua rotina blend:

  1. um cubo;
  2. um "cone" com 3 lados;
  3. um "cone" com 4 lados; e
  4. um "cilindro" com 5 lados.


Relatório

No relatório deve constar uma descrição do algoritmo implementado e uma cópia das superfícies geradas para os seguintes números de iterações: 1, 2, 3 e 10.


Voltar para a página do curso.