4645Z-4 - Fundamentos de Computação Gráfica
Trabalho I - Robô Articulado


Objetivo
        Criar um robô que seja controlável por teclas e que permita a movimentação de objetos em um cenário 2D.

Descrição

O controle do robô pode ser feito com o teclado.

O programa deverá exibir, EM OPENGL, um cenário que represente a vista lateral de uma cena, semelhante ao da figura abaixo, onde encontram-se um "robô de braço articulado", e um conjunto de "caixas" que devem ser transportadas para "prateleiras".

O transporte das "caixas" deve ser feito pelo robô.  Para "pegar" uma caixa deve-se tocá-la com a ponta do braço do robô e teclar "barra de espaço" para prendê-la ao braço.

Só deve ser permitido "pegar" caixas que não tenham outras caixas sobre ela.

Para poder pegar uma caixa, ela deve estar próxima da extremidade do braço. Para calcular a distância entre a caixa e um ponto do braço, utilize a func'ão CalculaPonto, disponível neste link.

Quando uma caixa estiver presa ao braço, qualquer movimento deste deve mover a caixa.

Para  soltar a caixa tecla-se barra de espaço. Ao soltar uma caixa, este deve começar a "cair" e parar quando tocar em um obstáculo como a prateleira, o chão ou outras caixas. 

Movimentos do robô

Para mover o robô para os lados pode-se usar teclas de seta.
Um robô não pode atravessar uma caixa.
O movimento das articulações deve ser realizado de forma individual e pode ser controlado por teclas. Uma sugestão sugestão de teclas  para controle é dada na tabela a seguir.


A - Move junta 1 para esquerda a - Move junta 1 para direita

B - Move junta 2 para esquerda

b - Move junta 1 para direita
....... .......
  

 

O giro de cada junta do braço do robô deve ser feito a cada 15 graus.



Modelos de Objetos


Os modelos das caixas e objetos do cenário são de livre escolha, desde que sejam formados por objetos compostos por um conjunto de quadrados coloridos. A descrição destes objetos deve ser feita por meio de arquivos texto, conforme o formato a seguir.


#CORES
4
1 0 0 0  (definição da cor 1 - PRETO)
2 255 0 0  (definição da cor 2 - VERMELHO)
3 0 255 0  (definição da cor 3 - VERDE)
4 255 255 255  (definição da cor 4 - BRANCO)

#OBJETO
5 4  (número de linhas e colunas do objeto)
1 1 1 1
1 3 3 1
1 3 3 1
2 2 2 2
1 1 1 1