Exercícios

2.4. Exercícios


(Exercícios obrigatórios – 2018)


Criar uma cena gráfica com 3 ambientes diferentes relacionados ao passatempo “ligar pontos”. A ilustração deve possuir algum desenho de primitiva do tipo quadrado ou círculo, por exemplo. A janela pode ter qualquer tamanho e deve ser dividida em 3 partes (horizontais ou verticais). Veja a descrição de cada parte da cena:

Descrição:

– (parte 1) Criar um desenho a partir dos pontos lidos de um arquivo txt. Mostrar somente os pontos;

– (parte 2) Apresentar o contorno do desenho criado;
– (parte 3) Apresentar o desenho criado e preencher com a cor desejada.
Outras especificações:

– cada parte deve ter uma indicação (A-B-C ou 1-2-3)

– A janela deve ter interação com o mouse. Ao claque do mouse na parte 3, botão esquerdo, a cor de preenchimento é alterada aleatoriamente


(Exercícios obrigatórios – 2017)


Criar uma cena gráfica com 2 ambientes diferentes. A janela pode ter qualquer tamanho. Veja a descrição de cada parte da cena:

Descrição:

– (parte 1) Criar uma treliça alusiva a um objeto. Deve ser utilizado o atributo GL_QUAD_STRIP, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN ou
GL_LINE_STRIP;

– (parte 2) Essa parte deve ter ao menos dois polígonos desenhados. Deve haver interação com o mouse. A cada clique do mouse nessa área, um preenchimento aleatório é
dado para os polígonos (fundo branco) ou para o fundo (polígonos sem preenchimento).

Outras especificações:

– cada parte deve ter uma indicação (A-B ou 1-2)

– A janela deve conter o nome da dupla ou dos seus integrantes.


(Exercícios obrigatórios – 2016)


Criar uma cena gráfica com 2 ambientes diferentes. A janela pode ter qualquer tamanho. Veja a descrição de cada parte da cena:

Descrição:

– (parte 1) Criar uma treliça alusiva a um animal ou objeto. Deve ser utilizado o atributo GL_QUAD_STRIP, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN ou
GL_LINE_STRIP;

– (parte 2) deve haver interação com o mouse. A cada clique do mouse nessa área, deve ser desenhado um círculo ou quadrado com preenchimento (aleatório).

Outras especificações:

– cada parte deve ter uma indicação (A-B ou 1-2)

– A janela deve conter o nome da dupla ou dos seus integrantes.


(Exercícios obrigatórios – 2015)

  1. Criar uma cena gráfica com 2 ambientes diferentes, conforme ilustra a figura abaixo. A janela pode ter qualquer tamanho. Veja a descrição de cada parte da cena:

    Descrição:

    – (parte 1) Criar uma treliça alusiva a um animal ou objeto, similar a ilustração da figura. Deve ser utilizado o atributo GL_QUAD_STRIP, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN ou
    GL_LINE_STRIP;

    – (parte 2) desenhar 3 figuras geométricas diferentes.

    Outras especificações:

    – cada parte deve ter uma indicação (A-B ou 1-2)

    – A janela deve conter o nome da dupla ou dos seus integrantes.

    – a cena deverá ter interação com o mouse. Ao clique do mouse na parte correspondente, botão esquerdo, cada região tem uma ação isolada e diferente: (a) a parte 1 altera a largura da linha;
    (b) a parte 2 muda de preenchida para não preenchida (ou vice-versa);

    Tela ilustrativa da cena.


    (Exercícios obrigatórios – 2014)

    1. Criar uma cena gráfica com 3 ambientes diferentes, conforme ilustra a figura abaixo. A janela, de tamanho 600 x 300, deve ser dividida em 3 partes
      verticais de 200 unidades. Veja a descrição de cada parte:

      Descrição:

      – (parte 1) Criar um desenho a partir de pontos lidos de um arquivo txt. Esse pontos delimitam o contorno de um objeto ou animal, por exemplo. O último ponto deve ser conectado ao primeiro;


      – (parte 2) Criar uma treliça, similar a ilustração da figura. Não é preciso desenhar a grade de linhas. Deve ser utilizado o atributo GL_QUAD_STRIP, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN ou
      GL_LINE_STRIP;

      – (parte 3) desenhar 2 quadrados/retângulos sobrepostos parcialmente e preenchê-los com alguma cor à sua escolha.

      Outras especificações:

      – cada parte deve ter uma indicação (A-B-C ou 1-2-3)

      – A janela deve conter o nome da dupla ou dos seus integrantes.

      – a cena deverá ter interação com o mouse. Ao clique do mouse na parte correspondente, botão esquerdo, cada região tem uma ação isolada e diferente: (a) a parte
      1 muda de preenchida para não preenchida (ou vice-versa); (b) a parte 2 altera a largura ou tipo da linha; (c) a parte 3 tem as cores dos quadrados/retângulos alteradas
      aleatoriamente.

      Tela ilustrativa da cena.


      (Exercícios obrigatórios – 2013)

      1. Implementar o seguinte jogo:

        Descrição:

        O jogo consiste em o usuário identificar o posicionamento de determinados objetos em uma área de trabalho após uma breve visualização inicial destes.
        Os objetos (círculos, quadrados e triângulos, por exemplo) surgem em posições aleatórias da tela por um período de X segundos. Após isso, a tela é apagada e o jogador precisa identificar via mouse ou outro dispositivo gráfico a posição de objetos específicos (somente os círculos, por exemplo). Ao final de cada “rodada”, o jogador precisa clicar em um botão “finalizar”, que realiza a contagem de tempo e o número de acertos.

        Regras:

        – os objetos devem surgir em posições aleatórias da tela

        – os objetos devem ser visualizados por alguns segundos (definir)

        – os objetos devem estar preenchidos (possuir cor);

        – o jogo deve usar 2 viewports (1 para a área de desenho e outra para informações/pontuação

        – Deve ocorrer ao menos duas “rodadas” ou fases no jogo.

        – Deve haver ao menos um texto na janela gráfica (título, nome do grupo etc).

        Tela ilustrativa do jogo.


        (Exercícios obrigatórios – 2012)

        1. Implementar o jogo “Andando no labirinto”, cujo objetivo consiste em passar por um labirinto sem bater em suas paredes. Cada vez que ocorrer um
          toque na parede, deve ser computado um ponto. Veja outros requisitos:

          -o objeto que anda pelo labirinto pode ser um círculo, quadrado ou triângulo;

          -o objeto deve estar preenchido com uma cor a escolha do grupo;

          -a largura do labirinto deve ser 1,5 vezes (aproximadamente) o tamanho do objeto;

          -utilizar as setas do teclado para movimento do objeto;

          -inserir ao menos um texto na janela gráfica (título, nome do grupo etc).

          Para obter a nota máxima neste exercício, deve-se utilizar 2 viewports (1 para a área de desenho e outra para informações/pontuação) e controlar o movimento do objeto por meio de um joystick.

          Outros requisitos para o funcionamento do jogo (dimensões, cores, formato do labirinto, tipo de joystick etc) podem ser definidos pelos grupos.

          Andando no labirinto.


        (Exercícios obrigatórios – 2011 – TARDE)

        1. Implementar o jogo “Apanhador de figuras”, cujo objetivo consiste em capturar a maior quantidade de figuras em 30 segundos. O objeto “apanhador” movimenta-se somente no eixo vertical. Cada vez que uma figura é capturada, computa-se uma pontuação da seguinte forma:

          -triângulo: 1 ponto

          -quadrado: 2 pontos

          -retângulo: -2 pontos

          -Polígono 5 lados: -2 pontos

          (Atenção: as figuras devem estar preenchidas. Deve-se usar uma mesma cor para os quadrados e retângulos).

          Para obter a nota máxima neste exercício, deve-se utilizar 2 viewports (1 para a área de desenho e outra para informações/pontuação) e controlar o movimento do “apanhador” por meio de um joystick.

          Outros requisitos para o funcionamento do jogo (dimensões, cores, critério de captura de uma figura, tipo de joystick etc) podem ser definidos pelos grupos.

          Apanhador de Figuras.


        (Exercícios obrigatórios – 2011 – NOITE)

        1. Implementar o jogo “Apanhador de figuras”, cujo objetivo consiste em capturar a maior quantidade de figuras em 30 segundos. O objeto “apanhador” movimenta-se somente no eixo horizontal. Cada vez que uma figura é capturada, computa-se uma pontuação da seguinte forma:

          -triângulo: 1 ponto

          -quadrado: 2 pontos

          -retângulo: -2 pontos

          -Polígono 5 lados: -2 pontos

          (Atenção: as figuras devem estar preenchidas. Deve-se usar uma mesma cor para os quadrados e retângulos).

          Para obter a nota máxima neste exercício, deve-se utilizar 2 viewports (1 para a área de desenho e outra para informações/pontuação) e controlar o movimento do “apanhador” por meio de um joystick.

          Outros requisitos para o funcionamento do jogo (dimensões, cores, critério de captura de uma figura, tipo de joystick etc) podem ser definidos pelos grupos.

          Apanhador de Figuras.


        (Exercícios obrigatórios – 2010)

        1. Construir uma aplicação que simule a ocorrência de uma “ola” (onda) a partir de quadrados desenhados na janela de desenho.
          A aplicação deve possuir no mínimo 5 quadrados, preenchidos com uma cor ou cores diferentes. A ola poderá ser controlada pelo teclado ou funcionar de forma automática. O programa deve possuir o nome ola.c. Faça as
          considerações que achar necessário para o desenvolvimento da aplicação.


        (Exercícios obrigatórios – 2009)

        1. Construir uma aplicação que desenhe uma palavra com no mínimo 3 letras, construídas
          com o uso de primitivas OpenGL.
          As letras são preenchidas alternadamente, com cores diferentes, conforme ilustra a figura
          abaixo. A primeira letra deve ser preenchida. O programa deve possuir o nome letras.c.
          Apresente o programa com a menor repetição de vértices.



(Exercícios obrigatórios – 2008)

  1. Utilizando o algoritmo de Bresenham, construa um programa de nome circ_seq.c que
    plote pontos de um círculo de raio X, lido via teclado. Os pontos do círculo devem ser
    plotados de maneira seqüencial a partir de comando manual ou comandados por algum recurso de
    temporização. Utilize pontos de tamanho superior ao default do OpenGL.

  2. Construir o desenho abaixo utilizando GL_TRIANGLES ou GL_TRIANGLES_STRIP como parâmetro da função glBegin(). O programa deve possuir o nome trelica.c.
    Apresente o programa com a menor repetição de vértices.



(Exercícios obrigatórios – 2007)

  1. Utilizando o programa linha.c como referência, implemente
    um programa chamado linha_teclado.c. O programa deve desenhar
    uma reta tracejada, de cor amarela, para dois pontos (x1, y1) e (x2, y2) lidos via teclado. Faça a
    análise dos pontos digitados, verificando se os mesmos pertencem à janela criada.

  2. Os pontos abaixo pertencem a um arquivo denominado contorno.txt.
    Cada linha contém as coordenadas (x,y) de um ponto. Desenvolva um programa que leia os pontos
    e plote a figura correspondente em uma janela de tamanho 128×128. O último ponto deve ser
    conectado ao primeiro.


    90 20

    90 30

    95 40

    90 45

    85 45

    80 40

    75 40

    70 45

    65 45

    60 50

    55 55

    50 55

    35 60

    25 65

    10 60

    05 60

    05 65

    15 70

    20 70

    20 80

    30 90

    45 90

    55 85

    65 95

    80 95

    70 80

    80 75

    90 65

    100 40

    115 35

    110 30

    100 30


(Exercícios opcionais – não é necessário entregar)

  1. Utilizando o programa linha.c como referência, implemente
    um programa chamado cubo_paralele.c. Este programa deverá desenhar
    em uma janela com fundo branco, de dimensões 300×300 pixels, dois cubos ou paralelepípedos em perspectiva utilizando, para cada um deles,
    primitivas diferentes do OpenGL.
    Qual a primitiva que constroi o objeto com a quantidade mais reduzida de instruções ou linhas de programa? (reutilizar os vértices do cubo, por
    exemplo). A linha que define o objeto deve ter uma cor diferente da cor preta.


  2. Escolha um dos três exercícios abaixo:

    (a) Implemente o algoritmo DDA para traçado de linhas, utilizando GL_POINTS como parâmetro da função glBegin(). Este parâmetro indica que cada vértice deve ser
    tratado como um ponto simples. Utilizando o algoritmo implementado, desenhe
    uma reta amarela para dois pontos (x1, y1) e (x2, y2) lidos via teclado. O programa deve
    aceitar pontos pertecentes somente ao terceiro quadrante. Verifique se há necessidade de alguma modificação no
    algoritmo DDA.

    (a) Implemente o algoritmo de Bresenham para traçado de linhas (simples ou genérico), utilizando GL_POINTS como parâmetro da função glBegin(). Este parâmetro indica que cada vértice deve ser
    tratado como um ponto simples. Utilizando o algoritmo implementado, desenhe
    uma reta amarela para dois pontos (x1, y1) e (x2, y2) lidos via teclado. Lembre-se que
    o algoritmo da transparência visto em aula só é válido para o primeiro octante.

    (b) Implemente o algoritmo de Bresenham para traçado de circunferências,
    utilizando GL_POINTS como parâmetro da função
    glBegin(). A cor do contorno da circunferência deverá ser vermelha. O raio e
    o centro do círculo são lidos via teclado.

  3. Elabore um programa que construa 2 retas que unam três pontos informados via teclado. Apresente um menu no qual o
    usuário escolhe a cor da linha (duas cores possíveis), o tipo da linha (contínua ou tracejada) e se o mesmo deseja
    que seja contruído um triângulo a partir dos 3 pontos (utilizando GL_TRIANGLES ou GL_TRIANGLES_STRIP).

  4. Construir o desenho abaixo utilizando GL_TRIANGLES ou GL_TRIANGLES_STRIP como parâmetro da função glBegin(). O programa deve possuir o nome bandeira.c.
    Apresente o programa com a menor repetição de vértices.

  5. Utilizando os programas que tratam com caracteres no openGL como referências, insira no programa feito
    na questão anterior o seu nome (ou o nome do programa, nome da dupla), na janela de desenho. Inclua linhas de
    comentários explicando as principais funções e ou principais partes do programa.