Buscar

COMPUTACAO GRAFICA I - Lista A2 - UVA - 2020

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
Nome:Vitor Ferreira Vieira Matrícula: 20162103212 
 
Ex1: Responda com suas palavras às perguntas abaixo: 
 
1.1. Descreva as matrizes de transformação e as respectivas instruções OpenGL para 
representar as transformações geométricas 3D de um objeto. Cite exemplos e parâmetros 
usados para as transformações geométricas de escala, translação e rotação. 
 
 Translação: deslocamento ao longo de uma direção (sem girar) 
 
2D 3D 
 
 x’ = x + xObj x’ = x + xObj 
 y’ = y + yObj y’ = y + yObj 
 z’ = z + zObj 
x é a posição x inicial, o ponto mais próximo do eixo x. 
y é a posição y inicial, o ponto mais próximo do eixo y. 
x’ é a nova posição de x 
y’ é a nova posição de y 
xObj é dx 
yObj é dy. 
Comando OpenGL: glTranslate(Tx, Ty, Tz). 
 
 
Translação em 2D: Translação em 3D: 
 
 Rotação: um ângulo de rotação é aplicado a cada ponto de um objeto, fazendo com que esse 
objeto gire em torno de um ponto de referência 
 
R.sin(b) = y R.sin(a + b) = y’ 
R.cos(b) = x R.cos(a + b) = x’ 
 
cos(a + b) = cos(a).cos(b) – sin(a).sin(b) 
R.cos(a + b) = R.[cos(a).cos(b) – sin(a).sin(b)] = x’ 
R.cos(a).cos(b) – R.sin(a).sin(b) = x’ 
R.cos(b).cos(a) – R.sin(b).sin(a) = x’ 
x’ = x . cos(a) – y . sin(a) 
 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
sin(a + b) = sin(a).cos(b) + sin(b).cos(a) 
R.sin(a + b) = R[sin(a). cos(b) + sin(b).cos(a)] = y’ 
R.sin(a).cos(b) + R.sin(b).cos(a) = y’ 
R.cos(b).sin(a) + R.sin(b).cos(a) = y’ 
y’ = x . sin(a) + y . cos(a) 
 
Ou seja, 
x’ = x . cos(a) – y . sin(a) 
y’ = x . sin(a) + y. cos(a) 
 
2D 
 
 
3D 
Em torno do eixo z: 
 
Em torno do eixo x: 
 
 
Em torno do eixo y: 
 
 
x é a posição x inicial, o ponto mais próximo do eixo x. 
y é a posição y inicial, o ponto mais próximo do eixo y. 
x’ é a nova posição de x 
y’ é a nova posição de y 
a seria o ângulo da diferença de R e R’, logo seria o ângulo de Tg 
𝑦′
𝑥′
 - Tg 
𝑦
𝑥
 
Comando OpenGL: glRotate(ângulo, x, y, z). 
 
 
 
 
 
 
 
 
 
 
 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
 Escala: ampliar, reduzir ou distorcer o objeto em questão. 
 
2D 3D 
 
 x´= x. Sx x´= x. Sx 
 y´= y. Sy y´= y. Sy 
 z´= z. Sz 
 
x é a posição x inicial, o ponto mais próximo do eixo x. 
y é a posição y inicial, o ponto mais próximo do eixo y. 
x’ é a nova posição de x. 
y’ é a nova posição de y. 
Sx é a distorção em x. 
Sy é a distorção em y. 
Comando OpenGL: glScale(Ex, Ey, Ez). 
 
Casos de Escala: 
 
Sx = Sy > 1 → Ampliação 
0 < Sx = Sy < 1 → Redução 
Sx <> Sy → Distorção: alongamento ou encolhimento 
Sx = Sy = –1 → Espelhamento: imagens refletidas 
 
 
 Escala em 2D: Escala em 3D: 
 
 
 
1.2. Explique as vantagens de se utilizar coordenadas homogêneas na representação das 
matrizes de transformação geométrica 3D simples e compostas. Como deve ser a 
ordem de declaração das instruções OpenGL de transformação geométrica? 
 
Um sistema de coordenada homogênea utiliza o valor adicional para representar um ponto num sistema de 
coordenada qualquer. A representação de uma transformação composta se reduz a uma multiplicação de matrizes 
quadradas com coordenadas homogêneas de qualquer transformação simples. 
 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
A representação de um ponto P(x,y) em um sistema de coordenadas homogêneo é: 
 
P(W.x , W.y , W) = P(X, Y, W) 
 
para qualquer W <> 0 
 
W é chamado de fator de escala e x = X/W e y = Y/W. 
Nós sempre utilizaremos W = 1 e a divisão acima é desnecessária. 
Podemos imaginar um sistema de coordenadas homogêneas 2D, como posicionar o plano xy na posição W do eixo 
z de um sistema 3D qualquer. 
 
Assim podemos representar qualquer operação geométrica como uma matriz 3x3. 
Podemos realizar toda operação geométrica sobre um ponto como uma multiplicação de matrizes, onde uma é o 
ponto e a outra a matriz de transformação. 
 
   











1fc
0eb
0da
.1yx1y'X'
 
 
Os parâmetros da matriz podem ser ajustados de forma a que represente as três operações: 
 
Translação 
   











1DyDx
010
001
.1yx1y'X'
 
Escalonamento 
   











100
0Sy0
00Sx
.1yx1y'X'
 
Rotação 
   









 

100
0cosθsenθ
0senθcosθ
.1yx1y'X'
 
 
Esta definição permite a concatenação de operações de uma forma muito eficiente. Como qualquer 
sequência de operações lineares é sempre uma operação linear, podemos expressar qualquer sequência de 
operações geométricas como uma única matriz, resultante da multiplicação das matrizes representando cada uma 
das operações. 
Através disto calculamos uma única matriz, que utilizamos para transformar todos os pontos do objeto. 
Exemplo: Escalonamento dos pontos de um objeto pelo ponto Sx = 2 e Sy = 2 seguido de uma translação 
pelo vetor Dx = 10 e Dy = 5: 
 
 
   











100
020
002
.1yx1y'x'
 
 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
   











1510
010
001
.1yx1y"x"
 
 
 
   





















1510
010
001
100
020
002
.1yx1y'x'
 
 
   











1510
020
002
.1yx1y"x"
 
 
Isto é muito importante na rotação. 
Se quisermos rotacionar um objeto em torno de um ponto qualquer (por exemplo o seu próprio centro, que 
é a forma mais intuitiva de se rodar algo): 
– Necessitamos transladar o ponto sobre o qual será efetuada a rotação para a origem 
– Rotacional 
– Transladar de volta à posição original 
 
Para isso podemos calcular uma única matriz de rotação concatenada: 
 
   



















 












1DyDx
010
001
.
100
0cosθsenθ
0senθcosθ
.
1DyDx
010
001
.1yx1y'x'
 
 
1. Para desenhar o objeto é necessário: 
a. Fazer a transformada de viewport em função dos pontos dados; 
b. Desenhar o objeto; 
c. Transladar o objeto; 
d. Desenhar novamente o objeto. 
 
1.3. Qual a diferença entre as transformações geométricas aplicadas aos objetos 3D e as 
transformações geométricas aplicadas à câmera numa cena 3D ? 
 
Objeto 3D: 
 Transformar um objeto por alguma operação nada mais é do que que aplicar esta 
operação em todos os pontos do objeto. 
 
Cena 3D: 
A cena, vista da câmera, exige os objetos referenciados ao sistema de coordenadas 
da câmera. 
SOLUÇÃO: Mover os objetos para o sistema de coordenadas da câmera, e em 
seguida retornar com os objetos para sua posição original, mantendo o sistema de 
coordenadas dos objetos fixo no sistema de coordenadas da câmera. 
– Associar o sistema de coordenadas da câmera ao sistema de coordenadas do 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
objeto (equivale a colocar o centro do objeto no sistema de coordenadas da 
câmera) 
– Mover o objeto em direção oposta à posição da câmera, mantendo seu sistema 
de coordenadas centrado na câmera. 
 
1.4. Como podem ser classificadas as projeções geométricas? Descreva as instruções 
OpenGL e respectivos parâmetros para representar uma projeção Ortográfica e projeção 
Perspectiva em OpenGL. 
 
Dependem das relações entre o centro de projeção, plano de projeção e as direções dos 
raios deprojeção. 
 Projeções Paralelas (projeções cilíndricas) 
 Mantém o alinhamento dos pontos, pois a imagem de uma reta (sua projeção) é 
também uma reta. 
 O paralelismo também é conservado (duas retas paralelas resultam em retas paralelas 
após a projeção) 
 
 Projeções Perspectivas (projeções cônicas) 
 Produzem imagens mais realistas pois representam medidas menores quanto mais 
distantes do observador. 
 Mantém o alinhamento dos pontos, pois a imagem de uma reta (sua projeção) é 
também uma reta. 
 O paralelismo não é conservado (duas retas paralelas podem não ficar paralelas após a 
projeção). 
 
 Centro de projeção localizado no infinito e todas as linhas de projeção paralelas entre 
si. 
 Paralelas ortográfica - linhas de projeção paralelas entre si e perpendiculares ao plano 
de projeção. 
  Múltiplas Vistas Ortográficas 
  Axonométrica 
 Paralelas oblíquas - linhas de projeção inclinadas em relação ao plano de projeção 
  Cavaleira 
  Cabinet 
 
 Projeções paralelas ortográficas - linhas de projeção paralelas entre si e 
perpendiculares ao plano de projeção 
 Múltiplas Vistas Ortográficas – plano de projeção paralelo aos planos do objeto 
(faces): planta baixa, frente e elevação 
 Axonométrica – plano de projeção posicionado inclinado em relação aos planos do 
objeto 
  Isométrica – Os 3 eixos do objeto parecem ter a mesma mudança nas métricas: 
Ângulos de projeção entre os eixos principais são iguais entre si (120º) 
  Dimétrica 
  Trimétrica 
 
Projeção Ortográfica em OpenGL: 
static void Reshape(int width, int height) 
{ 
 glViewport(0,0,width,height); 
 glMatrixMode( GL_PROJECTION ); 
 glLoadIdentity(); 
 glOrtho(-10, 10, -10, 10, 1.8, 7); // define o volume visível da projeção paralela 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
} 
 
Projeção Perspectiva em OpenGL: 
static void Reshape(int width, int height) 
{ 
 glViewport(0,0,width,height); 
 glMatrixMode( GL_PROJECTION ); 
 glLoadIdentity(); 
 glFrustum(-10, 10, -10, 10, 1.8, 7); // define o volume visível da projeção perspectiva 
 } 
 
1.5. Descreva as propriedades de cada entidade que forma em uma cena 3D (objetos, 
câmera e iluminação). 
 
Objeto 3D: 
Propriedades: 
· Formato – descreve a superfície de contorno do objeto. Pode ser construída 
com diversos formatos básicos ou primitivos (por ex: esfera, cone, cubo, cilindro, 
etc.) 
· Tamanho – descreve as dimensões que caracterizam a grandeza e a pequenez 
do objeto, por exemplo: largura, altura e profundidade 
· Superfície – descreve a rugosidade, aspereza e suavidade da superfície de 
contorno do objeto, que influencia a sua interação com a luz. Por exemplo: 
metálica, plástica, espelhada, vítrea, emborrachada, etc. 
· Textura – descreve como um padrão de cores é distribuído na superfície. É 
uma grade bidimensional de valores de cor. Geralmente são fornecidas de 
arquivos bitmap. Por exemplo: mármore, madeira, areia, pedra, creme, água, etc. 
· Posicionamento – informa a localização e atitude (orientação, direção para 
onde está apontando) do objeto no espaço da cena 
 
Iluminação: 
Propriedades: 
Posicionamento – informa a localização e atitude da luz no espaço 
da cena 
· Textura – informa a cor que está sendo irradiada 
· Tipo – categoriza a luz segundo uma das alternativas: 
· Luz Ambiente – é a mais simples. Não possui localização. Ilumina 
todos os objetos com a mesma intensidade 
· Luz Pontual (omni-direcional)– emite luz a partir de um ponto (sua 
localização) em todas as direções (não possui uma atitude ou 
orientação específica) 
· Luz Direcional – possui orientação, mas não possui localização. 
Seus raios são paralelos entre si. 
· Luz Spot – possui orientação e localização. Produz luz na forma 
de um cone (determinado pelos ângulos de iluminação máxima – 
umbra - e periférica - penumbra) 
 
Câmera: 
É o ponto de vista que o observador poderá ver toda a cena que está disposta com 
os objetos. A imagem é como uma fotografia da cena, tendo assim uma visão 
geográfica da cena. 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
Propriedades: 
· Um sistema de aplicação 3D deverá ler o arquivo de cena e criar uma imagem 
bidimensional da informação tridimensional fornecida. 
 · A câmera é um tipo especial de objeto que só possui a propriedade 
posicionamento (localização e atitude no espaço). 
· É usada para visualizar a cena, mas não é visível na cena. 
· É uma analogia prática com uma máquina fotográfica, substitui o observador. 
· Só pode ser uma única. 
· Centro do Objeto - É o ponto eqüidistante dos extremos do objeto. 
· Eixo do Objeto - É uma reta que parte do centro do objeto, segundo a direção 
do maior comprimento do objeto. 
· Pivot – Centro de coordenadas do objeto, em referência a algum ponto do 
objeto. 
 
1.6. Descreva os sistemas de coordenadas de referência que são utilizados em uma 
modelagem 3D: (Sistemas de Coordenadas do Objeto, Universo, Normalizado e 
Dispositivo). 
 
Sistema de Referência do Universo (SRU): 
Utilizado para descrever os objetos em termos das coordenadas utilizadas pelo usuário 
em uma determinada aplicação. 
• Cada tipo de aplicação especifica seu universo de trabalho próprio e limites de 
coordenadas extremos (valores máximos e mínimos). 
Exemplos: 
 Sistema Radar 
– coordenadas polares (ângulos geográficos) 
 Sistema CAD de mecânica de precisão: coordenadas cartesianas (milímetros) 
 
Sistema de Referência do Objeto (SRO): 
Cada objeto tem suas particularidades descritas em função do seu próprio sistema de 
coordenadas. 
Cada objeto representa um mini-universo individual. 
Muitas vezes o centro do sistema de coordenadas coincide com o centro geométrico ou 
centro de gravidade do objeto. 
Em modelagem de sólidos, este ponto central de referência é denominado pivô (ou 
pivot). 
 
Sistema de Referência Normalizado (SRN): 
Trabalha com coordenadas normalizadas com valores entre 0 e 1 (0  x  1 e 0  y  
1), sendo x e y as coordenadas horizontais e verticais possíveis respectivamente. 
O SRN é um sistema de referência intermediário entre o SRU e o SRD; 
A principal aplicação do SRN é tornar a geração das imagens independente do 
dispositivo pois as coordenadas do universo são convertidas para um sistema de 
coordenadas padrão normalizado; 
 
Sistema de Referência do Dispositivo (SRD): 
Utiliza coordenadas que podem ser fornecidas diretamente para um dispositivo de 
saída especifico. 
O sistema de coordenadas depende geralmente da resolução e da configuração definida 
pelo usuário entre um conjunto de opções possíveis 
 
1.7. Qual a diferença entre a descrição topológica e a descrição geométrica da estrutura 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
de um objeto 3D? Descreva as técnicas usadas para Modelagem de objetos 3D: 
Boundary Representation (B-Rep), Wireframe e Modelagem em camadas. 
 
Descrição Geométrica –fornece a localização (valores de coordenadas) de cada 
vértice. 
Descrição Topológica – fornece a estrutura da forma através das listas das arestas de 
cada face. 
 
A modelagem B-Rep (Boundary Representation) é um tipo de modelagem de sólidos que 
permite que superfícies sejam representadas por diversas formas matemáticas, incluindo 
curvas splines e curvas Bezier. 
São utilizadas em sistemas de CAD, sendo as técnicas mais conhecidas: 
– Modelagem por Polígonos – gera sólidos facetados 
A técnica de representação pelo contorno (B-Rep) define os volumes através do 
armazenamento dos elementos geométricos (faces, arestas e vértices) e da relação entre 
esses elementos (denominada de topologia) necessários para descrição do objeto. 
Um programa que utilize a modelagem B-Rep precisa registrar quais arestas estão 
associadas à cada face e quais vértices os limitam. 
Ao contrário da modelagem matemáticae da construção geométrica de sólidos, a 
modelagem B-Rep retrata uma entidade 3-D através da sua superfície externa facetada 
(limites externos da entidade). 
– Modelagem em Camadas Construtivas - gera sólidos facetados 
– Modelagem por pedaços splines 
 
Wireframe (armação de arame) é um modelo construído apenas com vértices e arestas 
envolvendo uma forma. 
As faces formadas pelos vértices e arestas são transparentes. 
O conjunto de vértices e arestas gera um poliedro. 
Desenha uma estrutura de traços, isto é, um objeto que não tem superfície alguma. 
O aumento do número de faces do poliedro, melhora a definição do modelo (fica mais 
próximo do real), pricipalmente nos sólidos com superfícies curvas. 
Entretanto, quanto mais faces tem o poliedro, mais "pesado" será o modelo para ser 
manipulado pelo computador. 
Na construção do modelo WireFrame pode-se usar os seguintes formatos: 
Formato triangular – é o mais simples e mais preciso já que três pontos não colineares 
sempre estarão em um plano. Gera estrutura na forma de treliças 
Formato de quadrilátero – pode sempre ser dividido, pela diagonal, em duas figuras 
triangulares 
Figuras poligonais – são as mais complexas 
 
A modelagem em camadas de um objeto (esfera, cilindro, cone, etc.) cria um objeto 
primitivo centrado na origem, onde os vértices situam-se sobre camadas de formato definido 
(normalmente circunferências). 
A estrutura do objeto primitivo irá requerer parâmetros adicionais: um índice 
correspondente ao número de camadas (nc) e outro índice correspondente aos vértices 
existentes nas camadas (nvc). 
Basicamente o processo ocorre em três etapas: 
 São feitos cortes nos objetos definindo camadas 
 Em cada camada são distribuídos um número fixo de vértices 
 Os vértices entre camadas e nas próprias camadas são ligados 
 
1.8. Descreva os conceitos de volume de visão e planos de recorte em uma cena 3D ? Como 
estes parâmetros podem ser definidos na biblioteca OpenGL. 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
É uma pirâmide reta truncada, cujo vértice está localizado na lente da câmera. 
Quaisquer entidades 3D localizadas fora do volume de visão não podem ser vistas pela 
câmera 
O volume de visão é normalizado quando for escalonado para se encaixar dentro do 
intervalo de –1 até +1, para simplificação dos cálculos. 
 
Planos de Recorte: 
São definidos opcionalmente para descartar as entidades 3D localizadas muito distantes ou 
muito próximas à câmera. 
 Plano de Recorte Próximo – antes do qual nada pode ser visto 
 Plano de Recorte Distante – após o qual nada pode ser visto 
Assegura que as fórmulas 3D não desperdiçarão tempo reproduzindo entidades tão 
distantes que não ocuparão mais do que um único pixel. 
Garante que as entidades localizadas muito perto da câmera também serão descartadas. 
 
O Volume de Visão de pirâmide reta truncada leva mais tempo para ser calculado pelo 
computador e reproduz uma perspectiva convencional. 
Para simplificar os cálculos, o volume de pirâmide é distorcido para a forma mais simples 
de um paralelepípedo. 
Assim, as funções de recorte e o código necessário para operar um sistema de ordenação 
de profundidade “z-buffer” ficam facilitados. 
 
void EspecificaParametrosVisualizacao(void) { 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
gluPerspective(angle,fAspect,0.1,500); 
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
gluLookAt(0,80,200, 0,0,0, 0,1,0); 
} 
 
1.9. Descreva o funcionamento do algoritmo de remoção de faces escondidas (Hidden Faces). 
Qual é a utilidade do produto vetorial e do produto escalar no algoritmo de Hidden Faces 
 
Remoção das Faces Escondidas: 
Primeiro, deve-se definir as superfí cies que a Câmera pode ver. 
Para determinar qual o lado do objeto está de frente para câmara calcula-se o vetor 
perpendicular à superfície de cada face. 
Este vetor é o resultado de um produto vetorial entre dois vetores pertencentes à uma face 
do sólido. 
Restrição: o vetor normal N à superfície deve apontar para fora dela . 
Se o resultado do cálculo do produto interno entre o vetor normal à superfície do objeto e 
um vetor que aponta para a câmara for positivo, então o lado correspondente do objeto 
será visível. 
 
1.10. Descreva as propriedades da configuração e modelagem de fontes de luz e materiais em 
OpenGL. Dê exemplos dos coeficientes utilizados em cada campo. 
 
O primeiro passo para usar iluminação é desenhar objetos sólidos. Portanto, 
inicialmente, utilizando de métodos glutSolid. A ativação da iluminação, é feita através 
de duas etapas: primeiro ativamos as fontes de luz desejadas, e depois ativamos a 
iluminação como um todo. Para tanto, pode-se incluir linhas como: 
gl.glEnable(GL.GL_LIGHT0); 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
gl.glEnable(GL.GL_LIGHTING); 
 
O OpenGL suporta até 8 fontes de luz simultâneas, de GL_LIGHT0 a GL_LIGHT7 
 
Para que a iluminação funcione, é preciso criar materiais, e especificar suas propriedades 
(ambiente, difusa e especular) através de chamadas aos métodos glMaterial. O problema 
é que esse processo é trabalhoso, então OpenGL suporta um recurso chamado COLOR 
MATERIAL, que faz com que a cor do material seja alterada de acordo com a cor 
corrente de desenho. Dessa forma, basta usar glColor. para modificar o material. 
 
Para que isso funcione, é preciso habilitar esse estado e informar de que forma a cor do 
material deve ser modificada. Além disso, é possível informar que devem ser alteradas 
as propriedades ambiente e difusa do material. Incluindo, por exemplo, as seguintes 
linhas no código: 
gl.glEnable(GL.GL_COLOR_MATERIAL); 
gl.glColorMaterial(GL.GL_FRONT_AND_BACK, 
GL.GL_AMBIENT_AND_DIFFUSE); 
 
Também é necessário ajustar as propriedades da(s) fonte(s) de luz desejada(s). Para isso, 
um método defineIluminacao, pode ser o suficiente, insira uma chamada a ele no 
método display. 
 
// Define os parâmetros através de vetores RGBA - o último valor deve ser sempre 1.0f 
float luzAmbiente[]={0.2f, 0.2f, 0.2f, 1.0f}; 
float luzDifusa[]={0.7f, 0.7f, 0.7f, 1.0f}; 
float luzEspecular[]={1.0f, 1.0f, 1.0f, 1.0f}; 
float posicaoLuz[]={0.0f, 50.0f, 50.0f, 1.0f}; 
 
// Ativa o uso da luz ambiente 
gl.glLightModelfv(GL.GL_LIGHT_MODEL_AMBIENT, luzAmbiente, 0); 
 
// Define os parâmetros da luz de número 0 
gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, luzAmbiente, 0); 
gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, luzDifusa, 0 ); 
gl.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, luzEspecular, 0); 
gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, posicaoLuz, 0 );
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
Ex 2 Para cada um dos sistemas de equações abaixo, que transformam coordenadas (x, y, z) 
em coordenadas (x', y', z'), determine uma matriz de transformação A (4x4) tal que: 
X' = A . X, onde X = (x, y, z, 1) e X' = (x', y', z', 1): 
 
2x' = y - 2z + 3x - 1 
a) 
y' + y = 3 - 2x 
z'/2 = z + 1 - 3y 
 
 
a) x' = x - y + 1 
x' + y' = 2x - 1 
2z = 1 - z’ + 3x 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
 
 
Ex 3: Transformações Geométricas são a base de inúmeras aplicações gráficas. As matrizes 
de transformação podem representar diversos efeitos ou movimentos, tais como: 
translações, mudanças de escala, distorções, rotações e reflexões em relação aos eixos 
de coordenadas x, y, z, etc. Descreva detalhamente os efeitos e/ou movimentos em cada 
eixo e que são representados pelas seguintes matrizes de transformação Ai (4x4), que 
transformam pontos do espaço 3 para o espaço 3 U = Ai . X 
 
 
 
 
 
 
 
 
 
 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
 
A1 = 
 
 
 
 
 
 Escala: 4x, 3y e 2z Translação: 0.25x, 0.33y, 0.5z 
 
 
A3 = 0 0 -1 0 A4 = ½ 0 0 ½ 
 0 1 00 0 ½ 0 ½ 
 1 0 0 0 0 0 ½ ½ 
 0 0 0 1 0 0 0 1 
 
 Rotação: angulo 90º, 0.0x, 1.0y, 0.0z Translação e Escala para cada coordenada: 
 0.5x, 0.5y, 0.5z 
 
 
Ex4: Descreva os comandos OpenGL que implementam as matrizes de transformações A1 , 
A2 , A3 e A4 do exercício 3 anterior. 
A1: glScalef(4.0f,3.0f,2.0f); 
A2: glTranslatef(0.25f, 0.33f, 0.5f); 
A3: glRotatef(90.0f, 0.0f, 1.0f, 0.0f); 
A4: glTranslate(0.5f, 0.5f, 0.5f); e glScalef(0.5f,0.5f,0.5f); 
 
Ex5: Calcule as matrizes inversas das matrizes de transformação A1 , A2 , A3 e A4 do 
exercício 3 anterior. 
Dica: Usar o método das transformações geométricas inversas. 
 
4 0 0 0 A2 = 1 0 0 1/4 
0 3 0 0 0 1 0 1/3 
0 0 2 0 0 0 1 1/2 
0 0 0 1 0 0 0 1 
 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
 
 
 
 
 
 
 
 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
Ex6: Calcule os elementos da matriz de transformação B (4x4) tal que X'' = B . X, que 
transformam pontos X = (x, y, z, 1) em pontos X" = (x'', y'', z'', 1). A matriz B é uma 
matriz de transformação composta, formada a partir das matrizes de transformação A1 (4x4) e 
A2 (4x4) mostradas no ex.3 anterior, usando as equações matriciais a seguir: 
 
 X' = A1 . X , onde X' = (x’, y’, z’, 1) 
X" = A2 . X' 
 
 
 
 
 
 X' = A2 . X , onde X' = (x’, y’, z’, 1) 
X'' = A1 . X' 
 
 
 
 
 
 
 
 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
 
 
 
Ex7: As matrizes de transformação de rotação representam giros simples em relação aos 
eixos x, y ou z. Escreva as matrizes transformação A (4x4) e os respectivos comandos 
OpenGLpara cada caso abaixo: 
Dados: cos 0 = 1 cos 90 = 0 cos 180 = -1 cos 270 = 0 
sen 0 = 0 sen 90 = 1 sen 180 = 0 sen 270 = -1 
 
a) Rotação de 270 em relação ao eixo x. 
b) Rotação de 90 em relação ao eixo y. 
c) Rotação de 180 em relação ao eixo z. 
d) Rotação de 360 em relação ao eixo x. 
 
 
 
 
 
 
 
 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
 
 
 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
Y 
 
P0 
P4 
P3 0 
P1 X 
P2 
P0 
Y 
1 
P3 P1 
-1/2 P2P4 +1/2 
 
 
Ex08: O objeto primitivo Pirâmide é definido conforme as figuras abaixo: 
 
PIRÂMIDE: 
 
 
 
 
 
 
 
X 
X
 
 
 
Z 
 
Z 
Vista de cima (sobre eixo Y) Vista frontal (sobre eixo Z) 
 
 
 
 
 
 
 
P4 -1/2 
-1/2 
P3 
P0 
0 
+1/2 
P1 
P2 +1/2 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
a) Defina a matriz de vértices com as coordenadas X, Y, Z para o objeto Pirâmide. 
 
 
X Y Z 
P0 0 1 0 
P1 1/2 0 0 
P2 0 0 1/2 
P3 -1/2 0 0 
P4 0 0 -1/2 
 
A = 
0 1 0 
1/2 0 0 
0 0 1/2 
-1/2 0 0 
0 0 -1/2 
 
 
 
b) Defina a matriz de faces com vértices P0 até P4 para o objeto Pirâmide. 
 
 
P0 P1 P2 P3 P4 
F0 0 1/2 1/2 -1/2 -1/2 
F1 1 1/2 1/2 0 0 
F2 1 0 1/2 -1/2 0 
F3 1 0 0 -1/2 -1/2 
F4 1 1/2 0 0 -1/2 
 
Matriz P0 até P4 
A = 
0 1/2 1/2 -1/2 -1/2 
1 1/2 1/2 0 0 
1 0 1/2 -1/2 0 
1 0 0 -1/2 -1/2 
1 1/2 0 0 -1/2 
 
 
c) Inclua no método Desenha as instruções necessárias para mostrar o objeto Pirâmide como modelagem 
Wireframe utilizando as instruções GL_LINE_LOOP 
Dica: Apostila Curso OpenGL da PUC-RS, capitulo 12. 
// Função callback chamada para fazer o desenho da Pirâmide (Wireframe) 
void DesenhaPirâmide(void) 
{ 
// Limpa a janela e o depth buffer 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glColor3f(1.0f, 1.0f, 1.0f); 
// Desenha Pirâmide wireframe 
glBegin(GL_LINELOOP); // Faces da Pirâmide 
glVertex3f(0.0f,1.0f,0.0f); 
glVertex3f(0.5f,0.0f,0.0f); 
glVertex3f(0.0f,0.0f,0.5f); 
glVertex3f(-0.5f,0.0f,0.0f); 
glVertex3f(0.0f,0.0f,-0.5f); 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
glEnd(); 
glutSwapBuffers(); 
} 
UNIVERSIDADE VEIGA DE ALMEIDA 
Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 
 
 
 
Ex9: Inclua métodos de desenho no aplicativo em linguagem C++ com as instruções OpenGL 
necessárias para exibir o objeto Cone como modelagem Wireframe utilizando as instruções 
GL_LINE_LOOP: 
 
Parâmetros de entrada: raio R, altura H e número de vértices por camada N 
 
// Função callback chamada para fazer o desenho do Cone (Wireframe) 
void DesenhaCone(int R, int H, int N) 
{ 
 double alfa = 2.0 * M_PI / nvc; 
int j; 
GLfloat y0 = -0.5 * height; 
GLfloat y1 = 0.5 * height ; 
glBegin(GL_TRIANGLE_FAN); 
glVertex3f(0, y1, 0); 
for (j = 0; j <= nvc; ++j) { 
double angulo = j * alfa; 
GLfloat x = radius * cos(angulo); 
GLfloat z = radius * sin(angulo); 
glVertex3f(x, y0, z); 
 } 
glEnd(); 
} 
 
 
Y 
 
Vértice do topo R 
Y1=H/2 
 
H X 
 
 
Y0=-H/2 
 
 
Camada da base Z 
 
 
 
Ex 10: Desafio (EXTRA): Inclua rotina de Callback para tratar eventos de mouse, teclado, efeitos 
de iluminação e/ou animação (timer) para o desenho dos objetos Pirâmide e Cone em uma cena 3D 
com projeção perspectiva. 
 
Por exemplo: Digitar “p” ou “c” para ativar os desenhos dos objetos, ligar e desligar efeitos de 
iluminação, colocar uma animação com uma fonte de luz se deslocando como representasse o 
movimento de rotação da terra em relação ao sol, etc. 
	Nome:Vitor Ferreira Vieira Matrícula: 20162103212
	1.2. Explique as vantagens de se utilizar coordenadas homogêneas na representação das matrizes de transformação geométrica 3D simples e compostas. Como deve ser a ordem de declaração das instruções OpenGL de transformação geométrica?
	1.5. Descreva as propriedades de cada entidade que forma em uma cena 3D (objetos, câmera e iluminação).
	Objeto 3D:
	Propriedades:
	Formato – descreve a superfície de contorno do objeto. Pode ser construída com diversos formatos básicos ou primitivos (por ex: esfera, cone, cubo, cilindro, etc.)
	Tamanho – descreve as dimensões que caracterizam a grandeza e a pequenez do objeto, por exemplo: largura, altura e profundidade
	Superfície – descreve a rugosidade, aspereza e suavidade da superfície de contorno do objeto, que influencia a sua interação com a luz. Por exemplo: metálica, plástica, espelhada, vítrea, emborrachada, etc.
	Textura – descreve como um padrão de cores é distribuído na superfície. É uma grade bidimensional de valores de cor. Geralmente são fornecidas de arquivos bitmap. Por exemplo: mármore, madeira, areia, pedra, creme, água, etc.
	Posicionamento – informa a localização e atitude (orientação, direção para onde está apontando) do objeto no espaço da cena
	Iluminação:
	Propriedades: (1)
	Posicionamento – informa a localização e atitude da luz no espaço
	da cena
	Textura – informa a cor que está sendo irradiada
	Tipo – categoriza a luz segundo uma das alternativas:
	Luz Ambiente – é a mais simples. Não possui localização. Ilumina
	todos os objetos com a mesma intensidade
	Luz Pontual (omni-direcional)– emite luz a partir de um ponto (sua
	localização) em todas as direções (não possui uma atitude ou
	orientação específica)
	Luz Direcional – possui orientação, mas não possui localização.
	Seus raios são paralelos entre si.
	Luz Spot – possui orientação e localização. Produz luz na forma
	de um cone (determinado pelos ângulos de iluminação máxima –
	umbra - e periférica - penumbra)
	Câmera:
	É o ponto de vista que o observador poderá ver toda a cena que está disposta com os objetos. A imagem é como uma fotografia da cena, tendo assim uma visão geográfica da cena.
	Propriedades: (2)
	Um sistema de aplicação 3D deverá ler o arquivo de cena e criar uma imagem bidimensional da informação tridimensional fornecida.
	A câmera é um tipo especial de objeto que só possui a propriedade posicionamento (localização e atitude no espaço).
	É usada para visualizara cena, mas não é visível na cena.
	É uma analogia prática com uma máquina fotográfica, substitui o observador.
	Só pode ser uma única.
	Centro do Objeto - É o ponto eqüidistante dos extremos do objeto.
	Eixo do Objeto - É uma reta que parte do centro do objeto, segundo a direção do maior comprimento do objeto.
	Pivot – Centro de coordenadas do objeto, em referência a algum ponto do objeto.
	Ex 2 Para cada um dos sistemas de equações abaixo, que transformam coordenadas (x, y, z)
	X' = A . X, onde X = (x, y, z, 1) e X' = (x', y', z', 1):
	Ex4: Descreva os comandos OpenGL que implementam as matrizes de transformações A1 , A2 , A3 e A4 do exercício 3 anterior.
	 X' = A1 . X , onde X' = (x’, y’, z’, 1) X" = A2 . X'
	Ex7: As matrizes de transformação de rotação representam giros simples em relação aos eixos x, y ou z. Escreva as matrizes transformação A (4x4) e os respectivos comandos OpenGLpara cada caso abaixo:
	Vértice do topo
	Camada da base Z

Outros materiais