Cubo 3D

Projeto

Elaborar um programa orientado a objetos para a manipulação de um cubo em 3 (três) dimensões (eixos X, Y e Z). O cubo é denhado na tela e pode ser ampliado ou reduzido (escala), rotacionado (rotação) ou movimentado no espaço (translação).

O objeto Cubo é inicializado com as suas coordenadas iniciais (8 pontos no espaço que formarão as arestas) e cada ponto no formato P(x, y, z)

O Objeto deve ter métodos para mostrar e apagar (desenhar) o cubo no espaço. Métodos para aumentar e reduzir o objeto (escalar), mover no espaço e girar em qualquer eixo.

A representação deve ser feita na tela (um ambiente em 2 dimensões x e y) então na representação tem que existir a conversão de um sistema tridimensional (espaço) para um sistema bidimensional (tela ou plano). Toda a representação foi elaborada no sistema de coordenadas cartesianas (x,y,z).

Todo o processo de manipulação dos objetos é feito através da utilização de matrizes.

Considerações Preliminares

Transformações Geométricas

Todo desenho é composto por primitivos (pontos) cujos parâmetros são coordenadas em relação à origem de um sistema cartesiano. Sua transformação é obtida transformando-se todas as coordenadas que são parâmetros destes primitivos.

Tipos fundamentais de transformação:

Escala

Chama-se transformação em escala a amplialção ou redução de uma figura. A transformação em escala é obtida pela multiplicação de todas as coordenadas que definem o desenho (pontos) por fatores de escala não nulos. No caso bidimensional, estes fatores são: fator de escala horizontal que multiplica as coordenadas referentes ao eixo X do sistema cartesiano e o fator de escala vetical que multiplica as coordenadas referentes ao eixo Y do sistema cartesiano.

Chamando-se os fatores de escala horizontal e vertical de Ex e Ey, as coordenadas (x',y') obtidas pela transformação de escala das coordendadas (x,y) valem:

            x' = Ex  x
            y' = Ey  y
        

Um fator de escala maior que 1 provoca um ampliação na imagem na direção do eixo afetado pelo fator. Um fator de escala entre 0 e 1 provoca uma redução. Um fator negativo provoca um espelhamento da imagem em relação ao eixo não afetado por este fator.

Quando os dois fatores Ex e Ey são iguais, a figura obtida é semelhante a original, ou seja, não sofre distorção. Quando os fatores de escala são diferentes, obtém-se figuras distorcidas em relação à original.

Observe que quando se aplica uma transfomação em escala a um desenho, não só seu tamanho se altera mas também a distância de seus pontos à origem do sistema de coordenadas, pois o ponto (0,0) é o centro da escala. Para se fazer a escala em relação a um ponto que não a origem, deve ser feita uma combinação de transformações de translação e escala.

Translação

Chama-se translação à movimentação de uma figura para uma outra posição no sistema de coordenadas, de modo que todos os pontos da imagem sejam deslocados de uma mesma distância em relação à sua posição anterior.

A transformação de translação é obitda adicionando-se a todas as coordenadas que definem o desenho, as constantes de translação. No caso bidimensional, existem duas constantes: uma referente ao deslocamento paralelo ao eixo X e outra referente ao deslocamento paralelo ao eixo Y. Chamando-se essas constantes de Tx e Ty, as coordenadas (x',y') obtidas pela translação do ponto de coordenadas (x,y) valem:

            x' = Tx + x
            y' = Ty + y
        

Rotação em Torno da Origem

Chama-se rotação em torno da origem à movimentação de uma figura para uma outra posição, de modo que todos os pontos da imagem mantenham a mesma distância da origem que possuíam antes da transformação. Para a obtenção de uma rotação em torno de um ponto qualquer, deve-se fazer uma combinação de transformações de translação e de rotação em torno da origem.

O único parâmetro da transformação de rotação é o ângulo Ф, que indica o valor do deslocamento angular no sentido anti-horário.

As coordenadas (x',y') obtidas pela rotação do ponto de coordenadas (x,y) de um ângulo Ф em torno da origem, valem:

            x' = x  cos Ф - y  sen Ф
            y' = y  cos Ф + y  sen Ф