Lista de Exercícios de Computação Gráfica
Computação Gráfica Bidimensional
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 precisa 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 em uma Viewport(Janela de Exibição) quadrada o triângulo (10,10)-(20,50)-(30-10). Estas coordenadas referem-se ao modelo do triângulo. Considere cada uma das Windows(Janelas de Seleção) especificadas.
Window : (0,0)-(100,200)
Window : (0,0)-(200,100)
Window : (0,0)-(1000,60)
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 Exibiçã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 como seria possível exibir os mesmos objetos em ambas as regiões ?
Manipulação de Imagens
1 |
3 |
6 |
1 |
3 |
6 |
1 |
3 |
6 |
1 |
3 |
6 |
Crie uma rotina para suavizar uma imagem. Defina você mesmo a matriz de suavização. Assuma a existência da rotina LeCor(x,y, R,G,B) capaz de ler as componentes R, G e B de um ponto (x,y) da imagem.
Explique como funciona a técnica de detecção de bordas.
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.