Desenho de personagem de desenho animado

Descrição gerada automaticamente com confiança baixa

Logotipo

Descrição gerada automaticamente

Ícone

Descrição gerada automaticamente

 


Computação Gráfica
Prof. Márcio Sarroglia Pinho

Exercícios

Manipulação/Processamento de Imagens

 

IMAGEM
100  165
165  125

MATRIZ DE DIFUSÃO
       40%
40%    20%

-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)


Geometria Computacional

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

}