Python para Desenvolvedores

2ª edição, revisada e ampliada

Capítulo 34: Computação Gráfica


A Computação Gráfica (CG) é a área da Ciência da Computação que estuda a geração, representação e manipulação de conteúdo visual em sistemas computacionais e tem aplicação em várias áreas do conhecimento humano.

Simulações, por exemplo, são sistemas que empregam cálculos matemáticos para imitar um ou mais aspectos de um fenômeno ou processo que existe no mundo real. Simulações permitem entender melhor como o experimento real funciona e verificar cenários alternativos com outras condições.

No caso dos jogos, que na verdade são uma forma de simulação interativa que faz uso de recursos visuais para aumentar a sensação de realismo, conhecida como imersão, e com isso, enriquecer a experiência do jogador.

Outra aplicação é a visualização, como dizia um antigo ditado popular: "uma imagem vale por mil palavas", e isso é mais verdadeiro ainda quando é necessário interpretar grandes quantidades de dados, como acontece em diversas atividades cientificas, médicas e de engenharia.

Áreas como geografia, cartografia e geologia demandam por GIS (Geographic Information Systems / Sistemas de Informações Geográficas), que representam topologias e dados associados, tais como altura, umidade e outros.

A engenharia e atividades afins usam ferramentas CAD (Computer Aided Design / Projeto Assistido por Computador) para facilitar a criação de desenhos técnicos para componentes ou peças de maquinaria.

Além disso, várias formas de arte se beneficiam da CG, como o cinema, principalmente para a criação de efeitos especiais. A CG também permitiu o surgimento novas formas de arte, que usam um ambiente digital como mídia, como por exemplo a animação em três dimensões (3D).

Matrizes versus vetores

É muito comum representar uma informação visual em forma bidimensional (2D), seja em fotos, gráficos impressos ou em uma tela de LCD. Existem duas formas para a representação de imagens bidimensionais amplamente utilizadas, cada qual com suas vantagens e desvantagens.

A primeira é matricial, também conhecida como mapa de bits (bitmap) ou raster, na qual a imagem é representada como uma matriz bidimensional de pontos com informações sobre cor, chamados de elementos de imagem (picture element, geralmente abreviado como pixel). Esta forma requer algoritmos sofisticados para ser manipulada e armazenada, devido ao volume de dados, e a complexidade das operações, como interpolar valores durante um redimensionamento, por exemplo.

Bitmap

A segunda forma de representação são as imagens vetoriais, que são descritas através de entidades matemáticas que compõem a geometria da imagem (linhas, polígonos, texto e outros). Esta forma é menos exigente em termos de recursos computacionais e não apresenta problemas associados a redimensionamento, porém não permite muitas operações que o mapa de bits viabiliza.

Entre outras formas de representação, é interessante destacar os fractais, em que as imagens são geradas através de algoritmos que são aplicados de forma recursiva.

Estas formas de representação levaram ao surgimento de vários formatos de arquivo para armazenamento de imagens, inclusive abertos, como o PNG (Portable Network Graphics), que suporta imagens raster, com transparência inclusive, e o SVG (Scalable Vectorial Graphics), para imagens vetoriais, mapas de bits e até animações. Ambos são homologados pelo W3C (World Wide Web Consortium).

Bitmap x Vetorial

Existem hoje várias bibliotecas voltadas para CG disponíveis para Python, que estão em estado avançado de maturidade.

In [1]:
 
Out[1]: