Computação Gráfica
Prof.
Márcio Sarroglia Pinho
Manipulação/Processamento de Imagens
|
|
-1 |
-1 |
-1 |
-1 |
9 |
-1 |
-1 |
-1 |
-1 |
Processo de Visualização 2D
· Suponha um programa de desenho
onde a área disponível, na tela, para a exibição dos objetos é de tamanho fixo.
Uma das facilidades do programa é a ferramenta de ZOOM. Explique detalhadamente
quais as etapas envolvidas no processo de realização do Zoom. Considere deste a
marcação da área de zoom, até a reexibição do desenho. Assuma a existência de
uma rotina(DesenhaTudo)
capaz de reexibir todo o desenho, já realizando o recorte. Explique como são
obtidos os valores limites para as janelas de exibição e seleção. Quem informa
este valores, o programador ou o usuário ?. Mostre
quais as rotinas necessárias para conversão de coordenadas. Voce
NÃO precosa criar o código das rotinas, apenas
explique em detalhes o que elas fazem.
· Explique qual a
utilidade da etapa de Instanciamento no processo de
visualização bidimensional.
· Dê um exemplo em que se
possa mostra porque a técnica de Instanciamento
pode economizar memória. Assuma que 1 número inteiro ocupa 2 bytes.
· Desenhe na Viewport a abaixo o triângulo (10,10)-(20,50)-(30-10).
Estas coordenadas referem-se ao modelo do triângulo no universo. Considere cada
uma das windows especificadas.
Window : (0,0)-(100,200)
Window : (0,0)-(200,100)
Window : (0,0)-(1000,60)
· Qual a utilidade do
algoritmo de recorte de Cohen Sutherland? Mostre 3 exemplos.
· Crie uma rotina para
implementar o algoritmo de recorte de linhas por subdivisão recursiva.
Use o seguinte cabeçalho: Subdivide(X1, Y1, X2, Y2);
· Suponha um programa de
desenho onde a área disponível, na tela, para a exibição dos objetos é de
tamanho fixo. Utilizando os conceitos de Janela de Seleção(window)
e Janela de Visualização como seria possível exibir uma certa parte de um
desenho com um tamanho maior na tela ?
· Suponha um programa de
desenho onde haja disponível, na tela, duas áreas de tamanhos diferentes para a
exibição dos objetos. Utilizando os conceitos de Janela de Seleção(window) e Janela de Visualização como seria possível exibir
os mesmos objetos em ambas as regiões ?
· Considere: todas as
etapas do processo de visualização de objetos 2D; uma window
delimitada por: xumin=10, xumax=70,
yumin=40 e yumax=80; e os
seguintes parâmetros de instanciamento, aplicados
nesta ordem:
1º) Escala em X: 1, Escala em Y:
2 2º) Rotação: 0
3º) Translação X: 10, Translação Y: 0
Os retângulos com linhas pontilhadas representam a viewport.
Qual dos desenhos a seguir pode representar o desenho do triângulo definido por
(0,10)-(0,40)-(60,10)?
Justifique sua resposta.
· Suponha um programa de
desenho onde a área disponível, na tela, para a exibição dos objetos é de
tamanho fixo. Utilizando os conceitos de Janela de Seleção(window)
e Janela de Visualização como seria possível exibir uma certa parte de um
desenho com um tamanho maior na tela ?
· Suponha um programa de
desenho onde haja disponível, na tela, duas áreas de tamanhos diferentes para a
exibição dos objetos. Utilizando os conceitos de Janela de Seleção(window) e Janela de Exibição(viewport)
como seria possível exibir os mesmos objetos em ambas as regiões
?
Curvas
Paramétricas
· Crie 4 pontos e trace
uma curva de Catmull-Rom que passe por eles. Calcule
as coordenadas do vetores necessários para o traçado.
Cuide a nomenclatura e as coordenadas dos vetores e dos pontos.
· Defina uma estrutura de
dados capaz de guardar os pontos de controle de uma seqüência
de curvas Bèzier.
· Explique a criação de
uma curva Bèzier por 3 pontos a partir da equação
paramétrica da reta
· Como se pode garantir
continuidade de derivada entre dois segmentos de curva Bèzier.
Mostre com desenhos e apresente as fórmulas para o cálculo dos vetores. Tome
muito cuidado com a nomenclatura dos vetores e dos pontos. Crie uma rotina para
gerar o(s) dados(s) necessários a manutenção da continuidade.
· Imagine um sistema em
que usuário clique 4 pontos.
Após a marcação destes pontos, o programa ativa uma rotina de traçado de curvas
Hermite chamada TracaHermite(PA, PB, VA, VB), que deve
receber o pontos inicial e final da curva (PA e PB) e os vetores nestes pontos
(VA e VB).
Se os pontos clicados pelo usuário fossem P1, P2, P3 e P4, como poderia ser a
chamada da rotina de traçado da Hermite. Faça o
código necessário à chamada.
· Trace as curvas Bèzier a partir dos pontos a abaixo.
· Crie uma rotina em C "ArrumaCurva (CURVA C[10])" capaz de gerar os dados necessários à manutenção de continuidade de derivada entre todos 10 segmentos de uma curva Bèzier. Mostre com desenhos e apresente as fórmulas usadas. Tome muito cuidado com a nomenclatura dos vetores e dos pontos. Imagine que os 10 segmentos Bèzier estão em uma estrutura como:
typedef struct
{
XYR p[4];
} CURVA;CURVA Curvas[10];
· Trace as curvas Hermite a partir dos pontos e vetores a abaixo.
ponto inicial: (1, 2)
vetor inicial: (-2,0)
ponto final: (4, 0)
vetor final: (0,2)
Suponha
que existam as seguites funções:
OpenGL
Mostre a imagem gerada pelo trecho de programa em OpenGL
dado a seguir. Numere os desenhos de acordo com os comentários do código fonte.
void
Desenha()
{
glBegin();
glvertex2f(0,0);
glvertex2f(0,10);
glEnd();
}
void FazDesenho()
{
glTranslatef(10,0,0);
glRotatef(-45,0,0,1);
Desenha(); // 1
glLoadIdentity();
glTranslatef(0,10,0);
Desenha(); // 2
glTranslatef(0,10,0);
glRotatef(90,0,0,1);
Desenha(); // 3
glRotatef(-90,0,0,1);
Desenha(); // 4
}