Tipos de Projeção em Gráficos 3D

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Este laboratório demonstra as diferentes projeções de câmera para gráficos 3D e os efeitos da alteração da distância focal para uma projeção em perspectiva usando Python Matplotlib.

Dicas para a VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importar Bibliotecas

Primeiramente, importe as bibliotecas necessárias, incluindo Matplotlib e Axes3D de mpl_toolkits.mplot3d.

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d

Obter Dados

Obtenha os dados de teste para o gráfico 3D.

X, Y, Z = axes3d.get_test_data(0.05)

Criar uma Figura com Subplots

Crie uma figura com três subplots usando plt.subplots.

fig, axs = plt.subplots(1, 3, subplot_kw={'projection': '3d'})

Plotar os Dados

Plote os dados em cada um dos três subplots usando plot_wireframe.

for ax in axs:
    ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)

Definir a Projeção Ortográfica

Defina o primeiro subplot para usar uma projeção ortográfica com um FOV (campo de visão) de 0 graus e um focal_length (distância focal) de infinito.

axs[0].set_proj_type('ortho')  ## FOV = 0 deg
axs[0].set_title("'ortho'\nfocal_length = ∞", fontsize=10)

Definir as Projeções de Perspectiva

Defina o segundo subplot para usar uma projeção de perspectiva com o FOV (campo de visão) padrão de 90 graus e um focal_length (distância focal) de 1.

axs[1].set_proj_type('persp')  ## FOV = 90 deg
axs[1].set_title("'persp'\nfocal_length = 1 (default)", fontsize=10)

Defina o terceiro subplot para usar uma projeção de perspectiva com um FOV (campo de visão) de 157.4 graus e um focal_length (distância focal) de 0.2.

axs[2].set_proj_type('persp', focal_length=0.2)  ## FOV = 157.4 deg
axs[2].set_title("'persp'\nfocal_length = 0.2", fontsize=10)

Mostrar o Gráfico

Exiba o gráfico usando plt.show().

plt.show()

Resumo

Este laboratório demonstrou como criar um gráfico 3D usando Python Matplotlib e como alterar o tipo de projeção e a distância focal (focal length) do gráfico. A projeção ortográfica achata a imagem, enquanto a projeção de perspectiva exagera a perspectiva e dá à imagem uma profundidade mais aparente. A distância focal padrão de 1 corresponde a um Campo de Visão (FOV - Field of View) de 90 graus.