1. Como converter uma cena 3D para uma projeção ortográfica planta?

Passo 1

O enunciado pede que a gente pegue uma cena em coordenadas 3D (x,y,z) e produza uma “vista de cima” (projeção ortográfica planta), isto é, um desenho 2D em que vemos o plano XY e descartamos a profundidade z. O conteúdo que vamos usar é o pipeline de transformações de gráficos: transformação de visualização (view), projeção ortográfica e, por fim, mapeamento para coordenadas de tela.

Passo 2

Definir a câmera para vista planta. Como queremos olhar de cima para baixo, escolhemos:
\bullet posição do observador em P_e=(0,0,+\infty) (ou seja, “infinito” no eixo z);
\bullet direção de visualização \mathbf{d}=(0,0,-1);
\bullet vetor “up” (que aponta para cima na tela) igual a \mathbf{u}=(0,1,0).
A matriz de visualização (view matrix) resulta de um “LookAt” com esses parâmetros. No caso de projeção ortográfica planta sobre o plano z=0, essa matriz é, na prática, a identidade 4\times 4, pois já alinhamos os eixos de mundo com os eixos da câmera.

Passo 3

Aplicar a projeção ortográfica que joga cada ponto (x,y,z,1) sobre o plano z=0 mantendo x e y. A fórmula em coordenadas homogêneas é
M_{\text{ortho}} = \begin{pmatrix} 1 & 0 & 0 & 0\\\\ 0 & 1 & 0 & 0\\\\ 0 & 0 & 0 & 0\\\\ 0 & 0 & 0 & 1 \end{pmatrix},
pois ao multiplicar
\begin{pmatrix}1&0&0&0\\\ 0&1&0&0\\\ 0&0&0&0\\\ 0&0&0&1\end{pmatrix} \begin{pmatrix}x\y\z\\\ 1\end{pmatrix} = \begin{pmatrix}x\y\\\ 0\\\ 1\end{pmatrix}.

Passo 4

Descartar a coordenada z (que agora vale zero) e ficar só com o par (x,y). Esses valores estão em “Normalized Device Coordinates” (NDC). Se quisermos desenhar na tela, fazemos o mapeamento viewport:
x_{\text{tela}} = \frac{x - x_{\min}}{x_{\max}-x_{\min}}\,W,\quad y_{\text{tela}} = \frac{y - y_{\min}}{y_{\max}-y_{\min}}\,H,
onde [x_{\min},x_{\max}]\times [y_{\min},y_{\max}] é o retângulo de interesse na cena e W\times H é o tamanho da janela.

Passo 5

Para cada vértice original (x,y,z):
1. (View) – aqui é identidade.
2. (Proj.) – multiplica por M_{\text{ortho}} para obter (x,y,0,1).
3. (Viewport) – mapeia (x,y) para as coordenadas de pixel \bigl(x_{\text{tela}},y_{\text{tela}}\bigr).

Resposta

A projeção ortográfica planta é obtida pela matriz
M_{\text{ortho}}= \begin{pmatrix} 1 & 0 & 0 & 0\\\\ 0 & 1 & 0 & 0\\\\ 0 & 0 & 0 & 0\\\\ 0 & 0 & 0 & 1 \end{pmatrix},
seguida do descarte de z e do mapeamento viewport para obter as coordenadas finais 2D na tela.

Exercícios relacionados