Prévia do material em texto
Cr ea te d in M as te r P DF E dit or Associação Carioca de Ensino Superior Centro Universitário Carioca AV1 ( ) AV2 ( ) AV3 ( X ) Trabalho Acadêmico DISCIPLINA: Computação Gráfica Data: NOME E MATRÍCULA NO CARTÃO RESPOSTA UNIDADE: ( ) Rio Comprido ( ) Méier TURMA: NOTA: RUBRICA DO PROFESSOR: Professora: Catiúscia Borges LEIA COM ATENÇÃO: Este trabalho acadêmico está dividido em duas partes que não precisam ser desenvolvidas simultaneamente, desde que não extrapolem o prazo de entrega que é no dia 18/06. Parte 01 (4,0 pontos): Realização de um questionário formado por 5 questões objetivas, onde cada questão vale 0,8. Estas questões serão sobre os temas 01, 02 e 06. Atenção! Você deve responder uma questão por vez, uma vez que visualize o enunciado de uma questão, deve respondê-la, não possível retornar. Evite clicar em F5, isso pode fazer com que o sistema entenda que optou por deixar a questão em branco. Parte 02 (4,0 pontos): Realização de um programa, cujas especificações estão neste documento. Este programa está baseado nos temas 03, 04, 05, 07, 08, 09 e 10. Esta parte do trabalho acadêmico deverá ser desenvolvido individualmente. O programa deve ser enviado pelo AVA no link indicado. http://www.unicarioca.br/index.php Cr ea te d in M as te r P DF E dit or . Parte 02 Discursiva QUESTÃO 1 (2,0 pontos): A imagem 01 representa um objeto inserido por um usuário, a imagem dois representa este objeto modificado após EXATAMENTE quatro transformações: Imagem 01 Imagem 02 Relacione a imagem 2 com a imagem 1 e determine as transformações usadas neste processo e expresse a configuração de cada transformação: (Obs.: Não há apenas uma resposta) [ ] [ ] [ ] [ ] Determine uma única matriz operação que realiza este conjunto de operações em uma única passada: Op = [ ] Determine a matriz objeto original e aplique a operação neste objeto: 𝑀𝑜𝑏𝑗 ∗ 𝑂𝑝 = 𝑀𝑜𝑏𝑗 ′ [ ] . [ ] = [ ] 3 0 0 0 2 0 0 0 1 ESCALA 3 0 0 0 2 0 7 -3 1 TRANSLAÇÃO 3 0 0 0 2 0 7 -3 1 -2 1 1 -1 1 1 -1 3 1 1 -1 1 4 -1 1 4 3 1 Cr ea te d in M as te r P DF E dit or . QUESTÕES 2 (4,0 pontos): A figura 01 representa o layout inicial do programa, nele podemos observar um painel de comandos, onde os eixos dos gráficos, os tipos de funções e as cores dos gráficos das funções podem ser alteradas. Figura 01 Gerenciamento do Mouse: Com o botão esquerdo do mouse o usuário poderá escolher a exibição do eixo, o tipo de função do segundo grau, a concavidade da parábola e a cor do gráfico da função. Sobre os eixos: Inicialmente o programa exibe os eixos x e y e a linhas secundárias. Ao clicar na região dos eixos pela primeira vez, as linhas secundárias não serão mais exibidas, ao clicar pela segunda vez, os eixos e as linhas secundárias não serão mais exibidas e ao clicar pela terceira vez, os eixos voltam para o estado inicial. Sobre as funções: Ao clicar no botão de função do segundo grau sem raízes reais, uma função deste tipo deve ser exibida, ao clicar no botão de função do segundo grau com duas raízes reais iguais, uma função deste tipo deve ser exibida e ao clicar no botão de função do segundo grau com duas raízes reais distintas, uma função deste tipo deve ser exibida. Ao clicar na região de exibição do gráfico a concavidade da parábola é alterada assim como os botões de controle. Duas funções não devem ser exibidas em simultaneidade. O conjunto de figuras abaixo mostra cada tipo de função do segundo grau. Função do segundo grau sem raízes reais e com a concavidade da parábola voltada para cima. Função do segundo grau com duas raízes reais iguais e com a concavidade da parábola voltada para cima. Cr ea te d in M as te r P DF E dit or . Função do segundo grau com duas raízes reais distintas e com a concavidade da parábola voltada para cima. Função do segundo grau sem raízes reais e com a concavidade da parábola voltada para baixo. Função do segundo grau com duas raízes reais iguais e com a concavidade da parábola voltada para baixo. Função do segundo grau com duas raízes reais distintas e com a concavidade da parábola voltada para baixo. Sobre as cores: Inicialmente o gráfico será apresentado na cor vermelha, ao clicar no botão destinado a cor, o gráfico deve assumir a cor verde, em seguida cor azul e em seguida volta para vermelha. Com o botão direito do mouse o programa deve voltar ao status inicial (todos os parâmetros devem ser reinicializados). Gerenciamento do Teclado: Apenas cinco teclas podem estar ativas “E” (ou “e), “1”, “2”, “3” e “0” Ao digitar “E” (ou “e”), as condições do eixo devem ser alteradas (segundo a descriçao anterior); Ao digitar “1”, a função do 2º grau sem raízes reais deve ser exibida; Ao digitar “2”, a função do 2º grau com duas raízes reais iguais deve ser exibida; Ao digitar “3”, a função do 2º grau com duas raízes reais distintas deve ser exibida; Ao digitar “0”, o programa deve voltar ao status inicial (todos os parâmetros devem ser reinicializados). Cr ea te d in M as te r P DF E dit or . Seu programa deve ter como parâmetro as linhas de código abaixo, onde você não pode acrescentar outras funções, além das estabelecidas nestas linhas; a função main( ) deve permanecer inalterada. /* Terceira Avaliação de Computação Grafica – 2021-1 //Professora: Catiúscia Borges // Turma: // Nome: */ #include <GL\glut.h> #include <stdio.h> //Gerenciamento dos eixos int g_eixo = 1; // Gerenciamento em 3 etapas // 0 Sem eixo principal e sem linhas secundárias // 1 Com eixo principal e com linhas secundárias // 2 Com eixo principal e sem linhas secundárias //Gerenciamento das funções int g_funcao = 0; // 1 Exibe ou não a função do 1º grau // 2 Exibe ou não a função do 2º grau // 3 Exibe ou não a função do 3º grau //Gerenciamento das cores das funções int g_cor = 1; float R = 1, G = 0, B = 0; // 01 Vermelho // 02 Verde // 03 Azul //Gerenciamento da concavidade da parábola int g_par = 1; //Layout void Layout(){ //Eixos glLineWidth(1); glBegin(GL_LINES); //Secundários glColor3f(0.7, 0.7, 0.7); for (float i = 3; i <= 5; i = i + 0.2){ glVertex2f( 5, i); glVertex2f( 7, i); glVertex2f(i+2, 3); glVertex2f(i+2, 5); } //Eixos x e y glColor3f(0, 0, 0); glVertex2f( 5, 4); glVertex2f( 7, 4); glVertex2f( 6, 3); glVertex2f( 6, 5); glEnd(); Cr ea te d in M as te r P DF E dit or . //Linhas glColor3f(0.2, 0.2 , 0.2); glBegin(GL_LINES); glVertex2f( 5.1 , 2.0); glVertex2f( 6.9 , 2.0); glVertex2f( 5.1 , 0.0); glVertex2f( 6.9 , 0.0); glVertex2f( 5.1 ,-2.0); glVertex2f( 6.9 ,-2.0); glEnd(); //Função do 2º Grau glColor3f(1,0,0); glBegin(GL_POINTS); for(float x =-0.55 ; x<= 0.55 ; x = x + 0.001) //Sem raízes reais glVertex2f(x + 6, g_par*(2 * x * x + 0.15) + 2); for(float x =-0.65 ; x<= 0.65 ; x = x + 0.001) //Com duas raízes reais iguais glVertex2f(x + 6, g_par*(2 * x * x )); for(float x =-0.75 ; x<= 0.75 ; x = x + 0.001) //Com duas raízes reais distintas glVertex2f(x + 6, g_par*(2 * x * x - 0.55)- 2); glEnd(); //Cor glBegin(GL_QUADS); glColor3f(1,0,0); glVertex2f( 5,-3); glColor3f(0,1,0); glVertex2f( 5,-5); glColor3f(0,0,1); glVertex2f( 7,-5); glColor3f(0,0,0); glVertex2f( 7,-3); glEnd(); //Contorno daTela glLineWidth(5); glColor3f(0,0,0); glBegin(GL_LINE_LOOP); glVertex2f(-5,-5); glVertex2f(-5, 5); glVertex2f( 7, 5); glVertex2f( 7,-5); glEnd(); //Linhas de Grade glBegin(GL_LINES); glVertex2f( 5,-5); glVertex2f( 5, 5); for(int i = -3; i <=3; i=i+2){ glVertex2f( 5, i); Cr ea te d in M as te r P DF E dit or . glVertex2f( 7, i); } glEnd(); } void F01(){ } void F02(){ } void F03(){ } void Eixo(){ } void redesenha(){ glClearColor(1,1,1, 0); glClear(GL_COLOR_BUFFER_BIT ); Layout(); glFlush(); } void Teclado(unsigned char key, int x, int y){ } void Mouse(int b,int state,int x, int y){ } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB ); glutInitWindowSize(600, 500); glutInitWindowPosition(0, 0); glutCreateWindow("FUNCAO"); gluOrtho2D(-5, 7, -5, 5); glutKeyboardFunc(Teclado); glutMouseFunc(Mouse); glutDisplayFunc(redesenha); glutMainLoop(); return(0); }