Exercícios
Visualização 3D
- Crie
a projeção perspectiva do cubo(0,0,0)-(10,10,10), estando o observador
na posição (0,5,0) e o alvo na posição (0,5,5). Mostre os cálculos.
Considere o ângulo de visão igual a 90 graus.
-
Crie a projeção perspectiva do paralelepípedo (0,0,0)-(6,6,8), estando
o observador na posição (9,6,4) e o alvo na posição
(6,6,4). Mostre os cálculos. Considere o ângulo de visão
igual a 90 graus.
-
Crie a projeção perspectiva do cubo (5,5,5)-(10,10,10), estando
o observador na posição (5,10,0) e o alvo na posição
(5,0,0). Mostre os cálculos. Considere o ângulo de visão
igual a 90 graus.
-
Imagine o cubo(0,0,0)-(10,10,10). Se um observador está olhando
para a posição (0,5,10) e está vendo uma imagem conforme
o desenho abaixo, qual será sua visão se passar a olhar para
(10,5,0) ?
-
Considere o seguinte programa em OpenGL:
glTranslatef(-5.00, 10.00, 0.00);
glutSolidCube(3);
glTranslatef(5.00, 10.00, 0.00);
glutSolidCube(3);
Desenhe as
vistas ortográficas(frontal, lateral direita e superior) da cena
representada por este programa. Considere o observador na posição (0,0,10) e o alvo na oriegem do sistema de coordenadas;
Modelos de Iluminação(de
Reflexão)
-
Qual a diferença entre os modelos de Sombreameto e de Reflexão
?
-
Explique como funcionam os algoritmos de cálculo de cor de um ponto
no espaço.
-
Mostre como funciona o modelo de iluminação difusa. Apresente
(com os cálculos) um exemplo que contenha pelo menos 2 pontos com
luminosidades diferentes.
-
Imagine um cubo (0,0,0)-(10,10,10), uma luz pontual colocada em
(15,
5, 15) e os pontos: A:(10, 5, 5); B:(10, 5, 7.5). Calcule
a intensidade da iluminação difusa nos pontos A e
B.
-
Segundo os modelo de iluminação difusa, quais os pontos das
faces do desenho abaixo são mais claras e quais são mais
escuras?(Considere a cena vista de cima). Enumere as faces em ordem crescente
de luminosidade. Liste as faces que não são vistas pela
luz.
Remoção de Faces Ocultas
- Explique a que tipos de objetos se aplica o algoritmo de remoção
de faces traseiras.
- Considere o código OpenGL apresentado a
seguir. Considere um observador em (0,0,0) olhando para (0,0,-10), com um
ângulo de visão de 90 graus.
glColor3f(0,1,0);
glPushMatrix();
glTranslatef(10.00, 15.00, -15.00);
glutSolidCube(10);
glPopMatrix();
glColor3f(0,0,1);
glPushMatrix();
glTranslatef(15.00, 10.00, -10.00);
glutSolidCube(10);
glPopMatrix();
Desenhe as vistas superior e frontal.
Execute
o algoritmo de Zbuffer nos polígonos que representam, respectivamente,
a face lateral esquerda do cubo azul e frontal do cubo verde.
- Construa o Zbuffer da cena formada pelas
faces descritas a seguir. Considere que as coordenadas estão no sistema
de referência da câmera. Utilize uma projeção ortográfica, frontal e
depois a lateral direita.
Face 1
|
Face 2
|
A: 0, -10, 15
|
E:10, -5, 10
|
B: 0, 10, 15
|
F:10, 5, 10
|
C: 20, 10, 15
|
G: 30, 5, 25
|
D: 20, -10, 15
|
H: 30, -5, 25
|
Ray Tracing
Dada a cena abaixo, determine quais dos 3 pontos marcados sobre o
plano de projeção é um ponto de sombra.
Técnicas de Culling
Para que servem os envelopes de objetos geométricos ?
Descreva três tipos de envelopes que se pode usar.
Descreva o algoritmo de geraçõa de um Convex Hull ?
Considere a existência de um algoritmo que calcula o ângulo
entre dois segmentos de reta:
double CalculaAngulo (Ponto P1, Ponto P2);
Crie uma rotina
capaz de imprimir(em ordem) os pontos que formam convex Hull dado um vetor
de pontos: Ponto PONTOS[100];
Dado que se tem uma rotina capaz de calcular o Convex Hull de um
conjunto de pontos:
void Convex (Ponto Vetor);
E outra capaz de determinar se um ponto está dentro de um quadrilátero
int DentroDoQuadrilatero(Ponto P, Ponto Quadri[4]);
Crie uma rotina (Quick) que seria chamada antes da Convex,
com o objetivo de aplicar o algoritmo de QUICK HULL:
Quick (VetorAntigo, VetorNovo);
Convex (VetorNovo);
Descreva três tipos de envelopes que se pode usar.
Quais as informações necessárias para armazenar o
envelope esférico de um conjunto de pontos ?
Crie o um algoritmo que calcule o envelope esférico de um confunto
de pontos.
Crie uma rotina que determine se há ou não colisão
entre dois envelopes retangulares.
Crie uma rotina que determine se há ou não colisão
entre dois envelopes esféricos.
Explique o funcionamento do algoritmo de Frustum Culling.
Que tipos de algortimos de Culling se pode usar para modelos
arquitetônicos ?