Fundamentos da Computação Gráfica Lista de Exercícios Marcelo Gattass TeCGraf/Departamento de Informática/PUC-Rio 19jun2003
I.
Introdução
1) Qual a diferença entre Processamento de Imagens, Visão Computacional e Síntese de Imagens? 2) Decomponha uma sistema gráfico em camadas e explique quais são os profissionais que atuam em cada camada. 3) O que é uma API? 4) Faça um breve histórico dos principais sistemas gráficos e sistemas de interface. 5) Quais são atualmente as principais ferramentas de programação utilizadas na Computação Gráfica? 6) O OpenGL é um sistema de interface com o usuário?
II.
Ray Tracing e Modelo de Iluminação
7) No algoritmo de Traçado de Raios, quando um raio atinge um ponto em um objeto como fazemos para calcular a cor que deve ser atribuída ao pixel correspondente?
ˆ, 8) Explique cada um dos termos da equação abaixo. Faça um desenho para explicar nˆ , ⋅ L rˆ , vˆ . l r k dr l r k sr I r I ar k dr n I g = I ag ⊗ k dg + ∑ l g ⊗ k dg nˆ ⋅ Lˆ + l g ⊗ k sg (rˆ ⋅ vˆ ) l k I I k luzes l k b sb b ab db b db
( )
9) Dado um cilindro cujo centro de uma base se encontra na posição b1 e o centro da outra base se encontra na posição b2 e cujo diâmetro das bases é d, escreva uma rotina que calcule a interseção entre o raio e o cilindro. (Sugestão: Transformar o cilindro para a posição canônica, fazendo a mesma transformação no raio.) 10) Seja r = o + td o raio incidente numa superfície de vidro num ponto cuja normal é n e o índice de refração é n, calcule o raio refratado considerando que o índice de refração do ar é 1. 11) Considere agora o raio saindo do vidro de índice de refração n para o ar. Calcule o raio refratado. Sempre haverá um raio refratado possível? 12) O melhor método conhecido de teste de interseção entre raio e esfera custa 16 multiplicações/subtrações, 13 multiplicações, 1 raiz quadrada e 3 comparações. Compare este resultado com a função que você implementou no seu ray tracer. 13) Determine o ponto p em que o raio partindo do ponto eye na direção d intercepta o plano que contém o triângulo a, b e c. Descreva como você faria para determinar se o ponto encontrado
Computação Gráfica - Gattass
pág. 1
Lista de Exercícios 18/8/2003
é interior ao triângulo e se o raio o atinge pelo lado positivo do triângulo. (Obs.: o ponto p deve ser calculado explicitamente).
x y z
a 3 4 2
b 4 1 5
c 2 1 6
d eye -1 12 -2 18 -1 12
14) No algoritmo de traçado de raios um raio atinge uma face em um ponto p onde a normal é n. As posições do eye e da única luz pontual presente na cena estão dadas, juntamente com as coordenadas de p e n, na tabela de Posições mostrada abaixo. Na tabela de RGB estão definidas as propriedades do material da superfície e a intensidade da luz. A última tabela fornece as demais propriedades do material cuja superfície contém P. Sabendo-se que o objeto interceptado é convexo e é o único da cena, determine: a) a componente difusa da reflexão da luz em P; b) a componente especular da reflexão da luz em P; c) a cor RGB a ser atribuída ao pixel correspondente incluindo estes dois efeitos e a luz ambiente.
x y z
Posições p n eye 6.0 1.0 9.0 2.0 2.0 1.0 1.0 1.0 1.0
n K refletido (R) K refratado (T) Opacidade Índice de refração
luz 3.0 5.0 1.0
30.0 0.0 0.0 1.0 (opaco) 1.5
Material Luz I Ia*Kd Kd Ks r 0.2 0.2 0.9 1.0 g 0.2 0.3 0.8 1.0 b 0.2 1.0 1.0 1.0
(contas com 3 algoritmos significativos)
15) Determine a componente difusa da luz de uma lâmpada de intensidade (200, 100, 50) colocada na posição homogênea [0, 1, 0, 0]T sobre o ponto A do triângulo abc. O material da face tem coeficiente difuso kd=(0.6, 0.5, 0.3), o triângulo é orientado no sentido trigonométrico, e as coordenadas do vértice são: a=(3, 2, 1), b=(8, 2, 1) e c=(4, 8, -4). 16) Determine as componentes especulares da cor do ponto A considerando a luz e o observador mostrados na figura abaixo. RGB = (255, 68, 255) Pos=(3, 5, 1)
eye=(8, 10, 1)
→
n = (-1, 2, 0) A= (6, 2, 1) Material:
Difusa: Kd = (0.6, 0.7, 0.6) Especular: Ks = (1.0, 1.0, 1.0) e n=8
Computação Gráfica - Gattass
pág. 2
Lista de Exercícios 18/8/2003
17) Determine a cor de um pixel correspondente à posição (5, 2, 2) do plano de projeção visto a partir do centro de projeção (10, 2, 1) considerando apenas a componente de reflexão difusa de uma luz de intensidade (100, 200, 150) e localização (10, 10, 10) numa esfera de raio 2 e centro (1, 2, 2) que tem como kd = (0.8, 1.0, 0.3). 18) Considere no algoritmo de Traçado de Raios o raio que vai do eye até o ponto P(i,j) no plano de projeção. Determine (se existir) o ponto P em que este raio intercepta a esfera de centro C e raio 1, e a normal unitária da esfera neste ponto. x y z
III.
eye P(i,j) 10 8 6 5 0 0
C 3 2 0
Transformações Geométricas
19) Veja os exercícios (resolvidos e propostos) nas notas de aula.
IV.
Projeções
20) Determine a matriz da transformação linear que leva A= (10, 0, 0), B= (10, 10, 0), C= (5, 20, 0), D= (0, 10, 0) e E= (0, 0, 20) para os pontos A’, B’, C’, D’, e E’ mostrados na figura abaixo.
y C’=(0.5, 2) D’=(0,1)
B’ =(1,1)
A’=(1,0)
x
E’=(-0.5, -0.5) 21) Determine a matriz que faça uma projeção paralela dos pontos do R3 no plano 2x+3y+z=0 segundo a direção (0,0,1). 22) Considere as projeções P1 e P2 representadas pelas matrizes M1 e M2, respectivamente. Para cada uma destas projeções determine: (a) a normal ao plano de projeção, (b) a direção de projeção, e (c) se ela é ortográfica ou oblíqua.
1 0 0.3 8 −2 2 1 M1 = 0 1 0.2 e M 2 = −2 5 4 9 0 0 0 4 5 2
Computação Gráfica - Gattass
pág. 3
Lista de Exercícios 18/8/2003
23) Determine a matrizes das projeções paralelas que projetam o cubo unitário ABC...H das figuras da esquerda da forma mostrada nas figuras da direita. y
Plano de Projeção = yz
C G A
H
B
y
D'
H'
C'
G' B'
F'
x
F
E z
D
z
E'
v
Hexágono de lado 1
A' H'=(0, 1.2, 1.3)
H=(1, 1, 1) (a)
y C G A E
z
D H
B
F
E
x
B A H
G
u D
C
H=(1, 1, 1)
(b)
V.
Rasterização
24) Seguindo o critério do algoritmo de Bresenham, determine quais pixels (círculos) são acesos na rasterização das duas linhas mostradas na figura.
(Marque as respostas pintando os círculos na própria figura) 25) Marque na figura os pixels que um algoritmo de rasterização de círculos, seguindo o critério de Breseham, deveria pintar para o arco mostrado na figura. Explique o critério adotado.
Computação Gráfica - Gattass
pág. 4
Lista de Exercícios 18/8/2003
26) Faça uma hachura na região interior, segundo a regra par-ímpar (even-odd rule), do polígono cuja fronteira está mostrada na figura abaixo.
27) Os algoritmos de preenchimento de polígonos usam um princípio de coerência para calcular as coordenadas x do início e do fim de cada linha de varredura (scan line). Com base no algoritmo que você está implementando para o segundo trabalho, determine os incrementos dxa, dxb e dxc do triângulo mostrado na figura abaixo, assumindo que a varredura se dê de cima para baixo (dy=-1). y
A c b
x
y
A
15
25
B
5
10
C
20
5
Computação Gráfica - Gattass
B a
C
x
pág. 5
Lista de Exercícios 18/8/2003
VI.
Clipping
28) A tabela abaixo mostra os códigos do algoritmo de Cohen-Suterland dos pontos P0 e P1 de diversos segmentos de reta. Os códigos estão ordenados no formato tbrl (top, bottom, right, left). Responda na coluna direita da tabela qual das condições se aplica a cada um dos segmentos: [A] [B] [C] [D] [E]
está fora, pode ser descartado; está dentro, pode ser desenhado; está parcialmente dentro, deve ser clipado e desenhado; não posso dizer se está fora ou parcialmente dentro; não pode existir um segmento com este código. Códigos P0 0010
P1 0000
1100
1000
1010
0010
0101
1010
0100
0001
0000
0000
RESPOSTAS (A|B|C|D|E)
29) Considere o algoritmo de clipping de Cohen-Sutherland aplicado a segmentos de retas em 3D onde os pontos são classificados em códigos com 6 dígitos na seguinte ordem: atrás; à frente; abaixo; acima; à esquerda; à direita (assuma “x” orientado da esquerda para a direita, “y” de baixo para cima e “z” de trás para a frente). Considere ainda na tabela abaixo as coordenadas dos vértices de 4 segmentos de retas e o paralelepípedo de clipping definido por: xmin = 2, xmax = 6, ymin = -1, ymax = 5, zmin = 0, zmax = 8. Complete a tabela com os códigos de cada vértice dos segmentos e responda na coluna direita da tabela qual das condições se aplica a cada um dos segmentos: descarte = está todo fora, pode ser descartado; desenhe = está todo dentro, pode ser desenhado; recorte = está parcialmente dentro, deve ser clipado e desenhado; indefinido = não é possível decidir só com base nos códigos (seria preciso fazer contas). Vértice v0
Vértice v1
(1, 6, 4)
(8, 7, 3)
(3, 4, 7)
(4, 0, 2)
(0, 4, 6)
(1, 7, 6)
(1, 2, 9)
(7, 7,-1)
Computação Gráfica - Gattass
Código v0
Código v1
Condição do segmento v0 v1
pág. 6
Lista de Exercícios 18/8/2003
30) Considere os valores calculados no algoritmo de clipping de linha de Cyrus-Beck para segmentos de reta P0P1. Determine os parâmetros tE e tS que marcam o início e o fim do trecho visível de cada segmento. Caso não exista trecho visível, risque a posição de tE e tS com um traço (-). Assuma que a normal Ni aponta para fora do polígono de clipping. a) A tabela abaixo mostra quatro valores do parâmetro t e o sinal Sd do produto interno Ni.(P1-P0) para 4 segmentos. t
Sd
t
Sd
t
Sd
t
Sd
1.5
+
0.5
-
1.2
+
0.2
-
0.5
-
0.9
+
0.15
-
0.4
+
-1.0
-
1.5
+
-0.2
-
1.8
+
0.5
-
1.3
+
0.2
-
0.7
+
tE
tS
b) A tabela abaixo mostra quatro valores do parâmetro t, o sinal Sd do produto interno Ni.(P1-P0), e o sinal Sn do produto interno Ni.(P0-PEi) calculados no algoritmo de CyusBeck para 2 segmentos de reta P0P1 que caíram em uma situação especial. Note que o sinal Sn é de Ni.(P0-PEi), e não do numerador da expressão t= -Ni.(P0-PEi) / Ni.(P1-P0). Ou seja, o numerador teria sinal contrário. t
Sn
t
Sn
t
Sd
t
Sd
∞
-
∞
-
0.0
-
1.0
+
∞
-
∞
+
0.0
-
1.0
+
tE
tS
31) Seguindo a lógica do algoritmo de clipping de polígono de Sutherland-Hodgman, determine a lista de vértices que passa de uma etapa para outra para o polígono 0,1,2,3,4,5,6 e 7 da figura abaixo. Responda na ordem indicada na tabela-resposta. 6 A
5
C
M
2 D
E
N
B 3 F 1 G H
I
7 K
J Q
P
L
4 0
Computação Gráfica - Gattass
pág. 7
Lista de Exercícios 18/8/2003
Tabela-resposta: Entrada
Esquerda
Direita
Abaixo
Acima
0 1 2 3 4 5 6 7
32) Determine a expressão que calcula o parâmetro t do algoritmo de Cyrus-Beck para o plano x+2y+3z=6 para o segmentos de reta P0P1, P0=(x0,y0,z0).e P1=(x1,y1,z1). Supondo que a normal aponte para fora, determine também a expressão que determina se o ponto correspondente ao parâmetro t está entrando ou saindo da região delimitada pelo plano.
Computação Gráfica - Gattass
pág. 8
Lista de Exercícios 18/8/2003
VII.
Z Buffer
33) Faça uma família de gráficos mostrando a relação entre o valor de z no mapa de profundidade e o valor de z no sistema de coordenadas do olho quando o programa utiliza a função: void glPerspective( 60, 4.0/3, n , f ); para os valores de f iguais a 10., 100., 1000, e valores de n iguais a 0.01, 0.1 e 1.0. Quando temos o problema de alias de profundidade? Como evitá-lo? 34) Determine o sistema de coordenadas do olho, xe ye ze, correspondente a chamada void gluLookAt(10,10,10, 0,0,0, 0,0,1) Que matriz transforma as coordenadas dos pontos escritos para o sistema padrão (olho na origem olhando na direção negativa de z) neste novo sistema (pode só indicar as multiplicações de matrizes necessárias para a resposta)?
Computação Gráfica - Gattass
pág. 9
Lista de Exercícios 18/8/2003
VIII. Curvas 35) Escreva a equação paramétrica e a equação implícita do círculo de centro no ponto (2,3) e raio 5. 36) Quando a forma implícita é mais conveniente que a forma paramétrica, e vice-versa? 37) O que é continuidade geométrica e continuidade paramétrica? Qual das duas é mais restritiva? 38) Como a curva de Bezier de grau 3, a curva de Hermite é uma curva paramétrica que utiliza polinômios cúbicos. A diferença esta nos vértices de controle. Enquanto a curva de Bezier utiliza 4 pontos, a curva de Hermite é definida pelo ponto inicial, digamos p0, pela derivada paramétrica no ponto inicial, r0, pelo ponto final, p3, e pela derivada paramétrica no ponto final, r3. Determine a posição dos pontos de controle de uma curva de Bezier, p0, p1, p2, e p3 de tal forma que as duas curvas sejam iguais. 39) Um trecho de uma B-Spline uniforme pode ser escrito como sendo: − 3t 3 + 3t 2 + 3t + 1 t3 (1 − t ) 3 3t 3 − 6t 2 + 4 p i (t ) = v i −1 + vi + v i +1 + v i + 2 6 6 6 6 Determine a posição dos vértices de controle de uma curva de Bezier, p0, p1, p2, e p3 que tenha os mesmos pontos da B-Spline. 40) Determine uma curva de Bezier racional que represente exatamente o primeiro quadrante de um círculo de centro na origem e de raio 3.
Computação Gráfica - Gattass
pág. 10