1. Implemente um pseudocódigo para gerar uma projeção perpectiva com um ponto de fuga.

Passo 1

O enunciado pede um pseudocódigo que receba um conjunto de vértices 3D e os projete num plano de projeção, gerando assim uma projeção em perspectiva com um único ponto de fuga. O conteúdo aqui é Transformações Geométricas em Computação Gráfica, mais especificamente Projeção Central (ou Perspectiva). Para resolver precisamos definir:
– A posição da “câmera” ou centro de projeção (vamos assumir a origem do sistema de coordenadas).
– O plano de projeção (vamos usar o plano \,z = d\, com d>0).
– A fórmula de projeção de cada ponto (x,y,z) em 3D para (x',y') em 2D:
x' = d\,\frac{x}{z}, \quad y' = d\,\frac{y}{z}.

Passo 2

Derivamos a fórmula da projeção central assumindo que os raios partem da origem (0,0,0) e cruzam o plano de projeção em z=d. Para um ponto 3D P=(x,y,z), o parâmetro de interseção t na reta \lambda(t)=(t\,x,\;t\,y,\;t\,z) que cumpre \lambda_z(t)=d é
t = \frac{d}{z}.
Substituindo em x e y obtemos
x' = t\,x = d\,\frac{x}{z}, \quad y' = t\,y = d\,\frac{y}{z}.

Passo 3

Agora montamos uma rotina que projeta um único ponto. Em pseudocódigo, fica assim:
função ProjetoPerspectiva(ponto\(3\)D, d)
    // ponto\(3\)D tem coordenadas ponto\(3\)D.x, ponto\(3\)D.y, ponto\(3\)D.z
    se ponto\(3\)D.z \(==0\) então
        retorne nulo  // evita divisão por zero
    fim se
    \(x_proj =\) d * ponto\(3\)D.x / ponto\(3\)D.z
    \(y_proj =\) d * ponto\(3\)D.y / ponto\(3\)D.z
    retorne (\(x_proj\), \(y_proj\))
fim função

Passo 4

Por fim, aplicamos essa função a todos os vértices do objeto 3D e obtemos a lista de vértices 2D para desenhar arestas ou superfícies:
função ProjetaObjeto(listaPontos\(3\)D, d)
    listaPontos\(2\)D \(=\) lista vazia
    para cada P em listaPontos\(3\)D faça
        P\(2=\) ProjetoPerspectiva(P, d)
        se P\(2\) não for nulo então
            adiciona P\(2\) em listaPontos\(2\)D
        fim se
    fim para
    retorne listaPontos\(2\)D
fim função

Resposta

Veja acima o pseudocódigo completo para gerar uma projeção perspectiva com um ponto de fuga único.

Exercícios relacionados