Trabalho aeds 2 - tp0

Disponível somente no TrabalhosFeitos
  • Páginas : 6 (1482 palavras )
  • Download(s) : 0
  • Publicado : 17 de dezembro de 2012
Ler documento completo
Amostra do texto
Universidade Federal de Minas Gerais
Instituto de Ciências Exatas
Departamento de Ciência da Computação

Algoritmos e Estruturas de Dados II
2º Semestre de 2011

Trabalho Prático 0 – Revisão de Programação e Tipos Abstratos de dados
Valor: 3 pontos
Data de entrega: 29/08/2011
O objetivo desse trabalho é rever conceitos básicos de programação bem como explorar os conceitos de
TiposAbstratos de Dados (TADs) e análise de complexidade, além de exercitar a preparação e submissão de
trabalhos práticos em AEDS II.
Você deverá programar um tipo abstrato de dados T3D, que será usado para realizar transformações
geométricas e projeções a partir de objetos tridimensionais. A base do TAD é a representação de conjuntos
de coordenadas homogêneas, em que cada vértice geométrico érepresentado por um vetor 4x1, que contém
as coordenadas x, y, z e t, com t = 1 para as finalidades deste trabalho. Portanto, você deverá definir um tipo
estruturado para matriz 4x4 e outro para matriz 4x1, e também um TipoObjeto para conter vetores de
vértices, limitados a um valor constante MAXVERT (use #define). Inclua no TipoObjeto um atributo inteiro
para indicar o número de vérticesefetivamente usados.
As transformações são obtidas a partir da combinação de transformações primitivas, listadas abaixo. As
transformações primitivas são representadas por matrizes 4 x 4, e a combinação de duas transformações se
faz por pré-multiplicação de matrizes. As transformações primitivas que serão implementadas no TAD são
as seguintes:
Translação:




T ( ∆ x , ∆ y, ∆ z ) = 


1 0 0 ∆x 

0 1 0 ∆y 

0 0 1 ∆z 
000 1


Mudança de escala:




S(Fx, Fy, Fz ) = 




Fx

0

0

0

Fy

0

0

0

Fz

0

0

0

0

0

0
1


Rotação (em torno dos eixos x, y e z, a partir da origem do sistema de coordenadas):



Rx (θ ) = 





Ry (θ ) = 





Rz (θ ) = 




1
0
0 cosθ
0sen θ
0
0

0
− senθ
cosθ
0

0
0
0
1

cosθ
0
senθ
0

0 − senθ
1
0
0 cosθ
0
0

0
0
0
1

cosθ
senθ
0
0

− senθ
cosθ
0
0

0
0
0
1

0
0
1
0




















A composição de operações é feita por pré-multiplicação, da seguinte forma. A matriz da primeira
transformação a ser realizada é o ponto de partida. A matrizda segunda transformação deve ser multiplicada
pela da primeira transformação, formando uma nova matriz. A matriz da terceira transformação deve ser
multiplicada pela matriz resultante anterior, formando nova matriz, e assim por diante. Ao final, tem-se uma
matriz 4x4 que condensa os efeitos de todas as transformações. Esta matriz final deve ser multiplicada pelos
vetores 4x1 correspondentesa cada vértice da geometria de entrada. A matriz 4x1 resultante contém as novas
coordenadas do vértice, após a transformação. Por exemplo, a sequência abaixo faz o deslocamento dos
vértices por 30 unidades em x e em y, realiza uma rotação de 30 graus ao redor da origem em torno do eixo z
e desloca os vértices novamente por -30 unidades em x e y. O efeito esperado é a rotação de 30 graus emtorno do eixo z ao redor do ponto de coordenadas (30, 30, 0).



M =




1
0
0
0

0
1
0
0

0 −30   cos30 − sen30

0 −30   sen30 cos30
.
1 0  0
0
 0
0 1 
0

0
0
1
0

0
0
0
1



. 




1
0
0
0

0
1
0
0

0 30 

0 30 
1 0
0 1


Para cada vértice de entrada P = [xP yP zP 1]T, o vértice resultante é P’= M . PAs operações que devem ser realizadas em seu TAD T3D são:
1. Cria o objeto a transformar: lê o arquivo de entrada e preenche o vetor de coordenadas. O espaço de
memória necessário para o vetor deverá ser alocado na função que chama esta função. Abra o
arquivo de entrada na função chamadora e passe o “handle” para a função, de modo que o arquivo
permaneça aberto após a execução de Cria para...
tracking img