Buscar

Livro-Texto 1 - Computação Gráfica

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 71 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 71 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 71 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Autores: Prof. Hugo Gava Insua
 Prof. Eduardo Seige Ianaguivara
Colaboradoras: Profa. Vanessa Lessa
 Profa. Larissa Rodrigues Damiani
Computação Gráfica
Professores conteudistas: Hugo Gava Insua / Eduardo Seige Ianaguivara 
Hugo Gava Insua
Mestre pela UNIP em Engenharia de Produção, especialista em Ensino de Matemática pela Universidade Cruzeiro do 
Sul (2017) e graduado em Matemática pela Universidade Metodista de São Paulo (2000). É professor do curso de Ciência 
da Computação e Engenharia da Computação da UNIP, ministrando as seguintes disciplinas: Matemática Discreta, Cálculo 
para Computação, Álgebra Linear, Estatística, Computação Gráfica, Processamento Digital de Imagem, Linguagens Formais 
e Autômatos e Aspectos Teóricos da Computação. Atuou como professor na rede oficial e privada de Ensino Fundamental e 
Médio do Estado de São Paulo.
Eduardo Seige Ianaguivara 
Doutor e mestre em Engenharia Biomédica pela Universidade de Mogi das Cruzes (2016), com Ênfase em Processamento 
de Sinais e Imagens Médicas. Especialista em Gerenciamento de Projetos pela Universidade de Mogi das Cruzes (2011) 
e em Maçonologia: História e Filosofia pela Uninter (2018) e graduado em Tecnologia em Redes de Computadores pela 
Universidade de Mogi das Cruzes em 2009. Atua há mais de 10 anos como docente dos cursos de Desenvolvimento de 
Sistemas e Produção de Jogos Computacionais, com foco na aplicação de estímulos coloridos na retenção e avaliação da 
atenção/destreza.
© Todos os direitos reservados. Nenhuma parte desta obra pode ser reproduzida ou transmitida por qualquer forma e/ou 
quaisquer meios (eletrônico, incluindo fotocópia e gravação) ou arquivada em qualquer sistema ou banco de dados sem 
permissão escrita da Universidade Paulista.
Dados Internacionais de Catalogação na Publicação (CIP)
Z13 Zacariotto, William Antonio
Informática: Tecnologias Aplicadas à Educação. / William 
Antonio Zacariotto - São Paulo: Editora Sol.
p., il.
Nota: este volume está publicado nos Cadernos de Estudos e 
Pesquisas da UNIP, Série Didática, ISSN 1517-9230.
1.Informática e tecnologia educacional 2.Informática I.Título
681.3
????.?? – ??
???
Profa. Sandra Miessa
Reitora
Profa. Dra. Marilia Ancona Lopez
Vice-Reitora de Graduação
Profa. Dra. Marina Ancona Lopez Soligo
Vice-Reitora de Pós-Graduação e Pesquisa
Profa. Dra. Claudia Meucci Andreatini
Vice-Reitora de Administração e Finanças
Prof. Dr. Paschoal Laercio Armonia
Vice-Reitor de Extensão
Prof. Fábio Romeu de Carvalho
Vice-Reitor de Planejamento
Profa. Melânia Dalla Torre
Vice-Reitora das Unidades Universitárias
Profa. Silvia Gomes Miessa
Vice-Reitora de Recursos Humanos e de Pessoal
Profa. Laura Ancona Lee
Vice-Reitora de Relações Internacionais
Prof. Marcus Vinícius Mathias
Vice-Reitor de Assuntos da Comunidade Universitária
UNIP EaD
Profa. Elisabete Brihy
Profa. M. Isabel Cristina Satie Yoshida Tonetto
Prof. M. Ivan Daliberto Frugoli
Prof. Dr. Luiz Felipe Scabar
 Material Didático
 Comissão editorial: 
 Profa. Dra. Christiane Mazur Doi
 Profa. Dra. Ronilda Ribeiro
 Apoio:
 Profa. Cláudia Regina Baptista
 Profa. M. Deise Alcantara Carreiro
 Profa. Ana Paula Tôrres de Novaes Menezes
 Projeto gráfico:
 Prof. Alexandre Ponzetto
Revisão:
 Vitor Andrade
 Kleber Souza
Sumário
Computação Gráfica
APRESENTAÇÃO ......................................................................................................................................................7
INTRODUÇÃO ...........................................................................................................................................................8
Unidade I
1 CONCEITOS BÁSICOS E TERMINOLOGIA ...................................................................................................9
1.1 Origens da computação gráfica .................................................................................................... 11
1.2 Arquitetura de sistemas gráficos (o hardware gráfico) ........................................................ 14
1.3 Primitivas como elementos básicos do desenho ..................................................................... 15
1.4 Primitivas com funções de linguagem ........................................................................................ 21
1.5 Pacotes gráficos e bibliotecas principais .................................................................................... 25
2 PRIMITIVAS GRÁFICAS EM DUAS DIMENSÕES ................................................................................... 27
2.1 Pontos, vetores e matrizes em CG ................................................................................................. 27
2.2 Sistemas de referência (universo, objeto, dispositivo) .......................................................... 31
2.3 Mapeamento window to viewport ............................................................................................... 33
2.4 Mapeamento de pontos (pixels) na janela de visualização ................................................. 34
3 RASTERIZAÇÃO DE LINHAS ......................................................................................................................... 38
3.1 Equação da reta .................................................................................................................................... 38
3.2 Algoritmo DDA (Digital Differential Analyser) .......................................................................... 45
3.3 Algoritmo de Bresenham ................................................................................................................. 50
3.4 Extensão para traçado de linhas em qualquer direção ....................................................... 56
3.5 Técnicas de antisserrilhamento (anti-aliasing) ........................................................................ 58
4 RASTERIZAÇÃO DE CURVAS ....................................................................................................................... 59
4.1 Equação da circunferência ............................................................................................................... 60
4.2 Traçado de curvas usando coordenadas polares ..................................................................... 61
4.3 Algoritmo de Bresenham ou ponto médio para circunferências e elipses ................... 64
7
APRESENTAÇÃO
Em ciência da computação, há vários desafios no processamento de imagens, análise e representação 
das informações. As atividades realizadas pelos profissionais que trabalham com computação gráfica 
ajudarão outros profissionais a abstrair melhor as ideias, apresentar as informações provenientes de uma 
massa de dados e a simular graficamente e em tempo real a interação entre materiais, objetos e diferentes 
fluidos com base em modelos matemáticos.
Este livro-texto tem foco em computação gráfica, e o objetivo da disciplina é aproximar/orientar 
o aluno sobre conceitos, técnicas e métodos de processamento, análise e visualização de imagens em 
aplicações gráficas ou que demandam tais recursos. 
Você terá a oportunidade de compreender os conceitos que envolvem a computação gráfica e 
seus componentes. Serão acentuadas a composição de imagens, as representações bidimensionais 
e tridimensionais, operações booleanas aplicadas aos objetos gráficos e suas diferentes técnicas de 
representação e separação/classificação.
Usa-se linguagem simples e direta neste livro-texto, como se houvesse uma conversa entre o 
autor e o leitor. Adicionalmente, as figuras auxiliam a entender os tópicos desenvolvidos. Os itens 
Observação e Lembrete vão ajudá-lo a solucionar eventuais dúvidas. Por sua vez, os Saiba mais 
ampliarão seus conhecimentos. Também há muitos Exemplos de aplicação, resolvidos em detalhes, 
fazendo que você absorva os assuntos abordados.
8
INTRODUÇÃO
A computação gráfica envolve uma série de conceitos importantes para o mercado de trabalho 
e, consequentemente, paraa empresa que trabalhar com ela. São subáreas vitais da referida área de 
conhecimento a síntese, o processamento e a análise de imagens.
Na síntese de imagens, os objetos criados em computador são representados a partir de modelos 
matemáticos, em especial, dos conhecimentos advindos da geometria. Portanto, as representações 
geométricas dos objetos visam facilitar a compreensão de uma massa de dados (representação) ou mesmo 
através de simulação destacar dados dinâmicos. São exemplos de síntese de imagem: a elaboração de 
um gráfico representativo da distribuição de frequências de um determinado evento registrado em uma 
planilha, o registro digital de uma imagem por meio de um scanner ou câmera e a criação de imagem 
de uma cena para um filme de animação.
O processamento de imagens envolve o tratamento de imagens digitais, melhorando certas 
características que são de interesse para o usuário. Podemos citar como exemplos: a restauração de 
uma fotografia antiga utilizando meios digitais, o realce de detalhes de uma imagem de uma câmera 
de segurança e a vetorização de uma imagem cartográfica.
Já a análise de imagens considera a especificação dos componentes da imagem a partir de sua 
representação visual. Ou seja, após seu processamento digital, é possível extrair informações importantes, 
como: o reconhecimento de caracteres em um texto digitalizado (OCR – Optical Character Recognition), 
o estudo de manchas urbanas, áreas de desmatamento e levantamento topográfico a partir de imagens 
de satélite ou aerofotogrametria.
O conteúdo deste livro-texto foi dividido em duas unidades. Na primeira, serão abordados os 
conceitos básicos de terminologia, as primitivas gráficas em duas dimensões e as rasterizações de 
linhas e curvas. Na segunda, serão estudados conceitos como a síntese de cores, as transformações 
geométricas em duas e três dimensões, a concatenação de transformações geométricas, a representação 
e a modelagem de primitivas gráficas 3D (tridimensionais).
Esperamos que você tenha uma boa leitura e se sinta motivado a ler e conhecer mais sobre 
computação gráfica.
Bons estudos.
9
COMPUTAÇÃO GRÁFICA
Unidade I
Inicialmente, definiremos os princípios da computação gráfica, seus elementos básicos de hardware 
ou conceituais para sua prática, por exemplo, para entender as primitivas gráficas, as bibliotecas 
necessárias, as aplicações e os componentes em duas dimensões. Também aplicaremos algoritmos de 
rasterização de linhas e curvas.
1 CONCEITOS BÁSICOS E TERMINOLOGIA
Devemos entender computação gráfica como uma subárea da ciência da computação que está 
em constante desenvolvimento. Dessa forma, não há uma definição pronta do que seja a computação 
gráfica, entretanto, podemos tentar conceituá-la de diferentes maneiras.
A partir dos conceitos de suas subáreas (síntese, processamento e análise de imagens), ela é parte da 
ciência da computação que estuda a geração, manipulação e interpretação de modelos matemáticos, 
na forma de imagens, utilizando o computador. Outra tentativa de conceituar computação gráfica 
é entendê-la como em um conjunto de métodos e técnicas de converter dados para um dispositivo 
gráfico via computador e ainda como “a área da ciência da computação que estuda a transformação 
dos dados em imagem. Essa aplicação estende-se à recriação visual do mundo real por intermédio de 
fórmulas matemáticas e algoritmos complexos” (SZESZ JÚNIOR et al., s.d., p. 3).
A partir do entendimento geral da computação gráfica, podemos progredir para sua 
composição/propriedades. Na figura a seguir, podemos visualizar uma ilustração sobre os elementos 
que a compõem. Destacam-se as aplicações que envolvem imagens e dados, e nesse contexto, são 
aplicados os componentes de processamento de imagens, visualização, processamento de dados e visão.
Visualização Visão
Processamento 
de dados
Processamento 
de imagens
Imagens
Dados
Figura 1 – Estrutura principal da computação gráfica
10
Unidade I
Com base na figura anterior, devemos definir seus componentes com relação à computação gráfica. 
Um dado dentro da estrutura computacional representa a menor unidade mensurável; de forma 
descontextualizada, não representaria nada, por exemplo, ao observar uma planilha do Excel sem os 
rótulos descritivos, não entenderíamos sua aplicação ou objetivo. A informação é o dado contextualizado, 
isto é, em uma massa de dados teríamos os rótulos de cada coluna (campo). Já o conhecimento é a 
aplicação da informação com componentes condicionais e filtros de informação (objetivo).
Uma imagem computacional pode ser descrita como um conjunto finito de números inteiros (pontos) 
de forma vetorial ou matricial.
O processamento de imagens envolve técnicas de manipulação para a melhoria de suas 
características, como bordas/serrilhamento, realce, aplicação de filtros e a detecção de formas, cores 
e bordas. Outras características também são contempladas nessa área, como melhoria do contraste, 
foco, diminuição de ruídos e distorções. No mercado de trabalho, encontraremos várias aplicações de 
processamento para as áreas biológica, pesquisa e médica.
A visualização envolve os recursos necessários para a interpretação e construção de imagens através 
de elementos como linhas, áreas, textos etc. Visão é a obtenção da descrição da imagem digital obtida 
que poderá ser fornecida por um conversor analógico/digital.
Com relação aos profissionais, a área de computação gráfica envolve engenheiros, arquitetos, 
matemáticos, artistas, médicos, classificando-se em:
• Desenvolvedores de ferramentas/bibliotecas: desenvolvimento de sistemas gráficos como 
OpenGL e OpenCL.
• Programadores de APIs (aplicações): linguagens de programação para criação de aplicações 
gráficas, como VRML (Virtual Reality Modelling Language), C, C++ e Python.
• Customizadores: adaptação de softwares existentes para outras aplicações.
• Usuários: as pessoas que utilizarão a aplicação, os usuários finais.
Quanto à utilização da computação gráfica no mercado de trabalho, podemos visualizar no quadro 
a seguir várias aplicações e suas áreas de conhecimento/acadêmicas. São associadas as aplicações da 
computação gráfica com diversas áreas, o que evidencia seu caráter multidisciplinar.
11
COMPUTAÇÃO GRÁFICA
Quadro 1 
Área Aplicações
Arte Desenho digital, animação 3D, modelagem 3D etc.
Medicina Processamento de imagens médicas, diagnóstico, estudos etc.
Arquitetura Maquetes virtuais, projetos, simulações de materiais etc.
Engenharia Projeto de peças, simulações de fluídos, prototipação etc.
Geografia Processamento de imagens, georreferenciamento etc.
Meteorologia Modelagem e visualização de dados, reconhecimento de padrões etc.
Astronomia Síntese de imagens, tratamento de imagens, reconhecimento de padrões etc.
Marketing Tratamento de imagens, reconhecimento de imagens, efeitos especiais etc.
Segurança Pública Reconhecimento de padrões, treinamento etc.
Indústria Treinamento, controle de qualidade, projetos, modelagem de dados, animação etc.
Turismo Maquetes virtuais, mapas, georreferenciamento etc.
Moda Modelagem 2D/3D, renderização, estamparia etc.
Lazer Jogos computadorizados, efeitos visuais, propagandas, animações etc.
Processamento de dados Interfaces humano-computador, projetos, mineração de dados, visualização de dados etc.
Psicologia Avaliação de transtornos comportamentais, testes de reconhecimento de formas e cores etc.
Educação Ensino, avaliação de reconhecimento de formas, textos e cores etc.
Adaptado de: Azevedo e Conci (2003a, p. 9).
1.1 Origens da computação gráfica 
A escala temporal nos ajuda a identificar oportunidades e direções de investigação e aplicação. 
Algumas das fundações que merecem destaque são: 
• Euclides (300-250 a.C.): desenvolveu toda a geometria que norteou seu desenvolvimento até o 
século XVIII. 
• Brunelleschi (1377-1446): arquiteto e escultor italiano que usou de forma criativa a noção de 
percepção visual e criou em 1425 a perspectiva. 
• Descartes (1596-1650): matemáticoe filósofo francês que formulou a geometria analítica e os 
sistemas de coordenadas 2D e 3D. 
12
Unidade I
• Euler (1707-1783): o mais produtivo matemático do século XVIII, que, entre outros, criou o 
conceito de senos, tangentes, a expressão que relaciona o número de vértices, arestas e faces 
de poliedros. 
• Monge (1746-1818): matemático francês que desenvolveu a geometria descritiva como um 
ramo da geometria. 
• Sylvester (1814-1897): matemático inglês que inventou as matrizes e a notação matricial, uma 
das ferramentas mais comuns da computação gráfica. 
• Hermite (1822-1901): matemático francês que provou a transcendência do número (usado 
como base para os logaritmos naturais) e desenvolveu funções elípticas e curvas.
Continuando nossa escala temporal, podemos identificar os aspectos de mudança que são 
considerados marcos da investigação científica e suas principais aplicações nas indústrias e na sociedade. 
• Em 1885, iniciou-se o desenvolvimento da tecnologia do tubo de raios catódicos. 
• Em 1927, a indústria cinematográfica definiu o padrão de 24 imagens/segundo. 
• Em 1930, P. e W. Mauchly construíram o primeiro computador, chamado ENIAC.
• Em 1938, Valensi propôs o tubo de raios catódicos colorido.
• Em 1947, os Bell Labs inventam o transistor. 
• Em 1950, Laposky criou as primeiras obras de arte com bases tecnológicas usando um efeito de 
um osciloscópio.
• Em 1955, surgiu o sistema Sage de monitoramento aéreo. 
• Em 1956, o MIT construiu o primeiro computador totalmente transistorizado. 
• Em 1959, foi cunhado o termo computer graphics, criado por L. Hudson, da Boeing. 
• No final da década de 1950, as universidades e empresas americanas, como a Boeing, começam a 
usar computadores para testar ideias e novas aplicações.
• Em 1960, foi lançado o primeiro computador comercial, o DEC PDP-1.
• Em 1961, foi criado no MIT o primeiro jogo de computador (Spacewars) para o DEC PDP-1. 
• Em 1963, Sutherland apresentou um sistema de desenho interativo de primitivas gráficas 2D 
baseado em caneta luminosa.
13
COMPUTAÇÃO GRÁFICA
• Em 1963, Englebart inventou o dispositivo de interação mouse. 
• Em 1963, Zajac produziu nos laboratórios da Bell o primeiro filme gerado por computador (imagens 
formadas de linhas e texto).
• Em 1963, surgiu o primeiro sistema comercial de CAD (DAC-1). 
• Em 1963, Coons inventou a teoria de representação de superfícies curvas através de retalhos 
baseados em aproximações polinomiais.
• Em 1965, Roberts criou um algoritmo de remoção de partes invisíveis de segmentos de reta e 
introduziu a noção de coordenadas homogêneas na representação geométrica de objetos. 
• Em 1966, foi lançado no mercado o primeiro console caseiro de jogos, o Odissey. 
• Em 1966, surgiu a primeira empresa de produção computacional de animações e efeitos 
especiais, a MAGI.
• Em 1967, Rougelet criou o primeiro simulador de voo interativo da Nasa.
• Em 1968, foi fundada a Intel. 
• Em 1969, a MAGI produziu para a IBM o primeiro comercial baseado em técnicas de computação 
gráfica. 
• Em 1969, foi criado entre os grupos da ACM o Special Interest Group on Graphics (SIGGRAPH). 
• Em 1969, nasceu a ARPANET, rede precursora da internet.
• Em 1969, nos laboratórios da Bell, foi construída a primeira matriz de pixels (cada pixel representado 
por 3 bits).
• Em 1972, A. Kay, no Xerox PARC, produziu o computador gráfico Alto.
• Em 1972, Bushnell fundou a empresa Atari.
• Em 1973, Metcalf desenvolveu a tecnologia Ethernet. No mesmo ano, foi editado o primeiro 
livro que aborda detalhadamente os algoritmos e métodos da computação gráfica, obra de 
Newman e Sproull.
• Em 1977, a Academia de Artes e Ciências Cinematográficas de Hollywood criou a categoria de 
Oscar de Efeitos Especiais.
14
Unidade I
• Em 1979, G. Lucas contratou Catmull, Ray Smith e outros para uma nova empresa denominada 
Lucas Film.
• Em 1974, Catmull desenvolveu o algoritmo Z-Buffer. 
A partir do algoritmo de Z-Buffer e com o lançamento do PC no início da década de 1980, surgiram 
uma infinidade de aplicações e filmes baseados em computador. O mercado da computação gráfica 
atingiu seu estágio de maturidade, apresentando um grande crescimento com produções realistas e 
técnicas avançadas de iluminação e modelagem. Foram exploradas outras possibilidades de geometrias 
além do espaço tridimensional, que são utilizadas com uma frequência cada vez maior pelas pessoas 
que trabalham com arte, computação e visualização científica.
1.2 Arquitetura de sistemas gráficos (o hardware gráfico)
A arquitetura de sistemas gráficos é o conjunto de componentes e técnicas utilizadas para projetar 
e implementar sistemas que produzem imagens em tempo real. Esses sistemas são usados em uma 
ampla gama de aplicações, como jogos, animação, visualização científica, realidade virtual e aumentada, 
entre outros.
A arquitetura de sistemas gráficos geralmente inclui os seguintes componentes:
• Dispositivos de entrada: teclado, mouse, joystick, dispositivos de rastreamento de movimento e 
câmeras que permitem ao usuário interagir com o sistema.
• Unidade de processamento gráfico (GPU): é o componente principal que realiza as operações 
matemáticas necessárias para gerar imagens em tempo real. A GPU é otimizada para processamento 
paralelo e é capaz de executar muitos cálculos simultaneamente.
• APIs gráficas: são interfaces de programação de aplicativos que permitem que os 
desenvolvedores interajam com a GPU para criar imagens em tempo real. Algumas das APIs 
gráficas mais populares incluem OpenGL, DirectX e Vulkan.
• Bibliotecas de software: como bibliotecas de física, de animação e de inteligência artificial, que 
ajudam a criar uma experiência mais imersiva para o usuário. Observe alguns exemplos a seguir:
— NumPy: uma biblioteca para Python que suporta matrizes e operações matemáticas de 
alto nível.
— TensorFlow: uma biblioteca de aprendizado de máquina de código aberto desenvolvida pela 
Google que permite que os desenvolvedores criem modelos de aprendizado de máquina.
— jQuery: uma biblioteca JavaScript popular que simplifica a manipulação do DOM e a criação 
de animações e efeitos.
15
COMPUTAÇÃO GRÁFICA
— Ruby on Rails: uma estrutura de aplicativo web que é baseada na linguagem de programação 
Ruby e inclui muitas bibliotecas úteis.
— Bootstrap: uma biblioteca de componentes de interface do usuário que inclui estilos CSS 
predefinidos e componentes interativos.
— Pandas: uma biblioteca para Python que suporta análise de dados e manipulação de dados em 
séries temporais e estruturas de dados.
— Pygame: uma biblioteca de jogos para Python que inclui recursos para criação de jogos em 2D.
— RubyGems: um gerenciador de pacotes para a linguagem de programação Ruby que permite 
que os desenvolvedores instalem e gerenciem bibliotecas de software.
• Display e saída: inclui monitores, projetores e dispositivos de realidade virtual e aumentada que 
exibem as imagens geradas pelo sistema.
A arquitetura de sistemas gráficos pode ser complexa e requer conhecimento especializado em 
matemática, programação, engenharia de software e design gráfico para ser projetada e implementada 
com sucesso.
1.3 Primitivas como elementos básicos do desenho
Em computação gráfica, primitivas são os elementos básicos usados para construir imagens e 
objetos. Essas primitivas são formas geométricas simples, como pontos, linhas, polígonos e curvas, 
que podem ser manipulados para criar formas mais complexas. Esses elementos básicos são usados 
em diversos sistemas gráficos e em muitas aplicações, incluindo jogos, animação, design gráfico e 
visualização científica.
As primitivas são definidas matematicamente, usando coordenadas e equações que descrevem suas 
formas. Por exemplo, um ponto é definido por sua posição em um sistema de coordenadas, enquanto 
uma linha é definida por dois pontos. Polígonos são formados por uma sequência de vértices conectados 
por linhas, e curvas são definidas por equações matemáticasque descrevem sua forma.
Uma vez que as primitivas são definidas, elas podem ser transformadas, rotacionadas, escaladas e 
combinadas para criar objetos mais complexos. Isso permite que os desenvolvedores criem modelos 3D, 
animações, gráficos vetoriais e outros tipos de conteúdo visual.
As primitivas são uma parte fundamental da computação gráfica e são usadas em quase todos os 
sistemas gráficos. Entender como elas funcionam é essencial para qualquer pessoa que queira criar 
conteúdo visual usando computadores.
16
Unidade I
As primitivas gráficas são os elementos básicos usados para criar imagens em sistemas gráficos. 
Essas primitivas são formas geométricas simples que podem ser manipuladas e combinadas para criar 
imagens mais complexas. As primitivas gráficas mais comuns serão destacadas a seguir.
Ponto 
É uma primitiva gráfica que não tem dimensão e é definida por um par de coordenadas (x, y). 
A representação matemática de um ponto é (x, y). 
Um ponto é a primitiva gráfica mais simples, sendo representado por uma única coordenada no 
espaço 2D ou 3D. A representação matemática de um ponto é dada por:
P = (x, y)
Onde x e y são as coordenadas do ponto na horizontal e vertical, respectivamente.
A figura a seguir mostra um ponto de cor vermelha em um espaço 2D representado na 
coordenada (3, 2).
Os pontos são primitivas gráficas muito utilizados em sistemas gráficos, como em softwares de 
desenho vetorial e de modelagem 3D. Eles são frequentemente usados para marcar locais importantes 
em uma imagem ou para representar objetos simples, como partículas em um sistema de partículas.
-6
-6
6
6
x
y
-5
-5
5
5
-4
-4
4
4
-3
-3
3
3
-2
-2
2
2 P(3,2)
-1-1 1
1
Figura 2
Linha 
É um elemento gráfico definido por dois pontos, também conhecido como segmento de reta. Uma 
linha é uma primitiva gráfica definida por dois pontos (x1, y1) e (x2, y2). A representação matemática de 
uma linha é dada pela equação y = mx + b, onde m é a inclinação da linha e b é o intercepto y. 
Uma linha é uma primitiva gráfica usada para conectar dois pontos em um espaço 2D ou 3D. 
É definida pelos pontos inicial e final, que determinam a sua posição e comprimento. A representação 
matemática de uma linha é dada por:
y = mx + b
17
COMPUTAÇÃO GRÁFICA
Onde m é a inclinação da linha e b é o ponto onde a linha cruza o eixo y. A inclinação m é dada 
pela diferença entre as coordenadas y dos pontos inicial e final, dividida pela diferença entre as 
coordenadas x dos mesmos pontos.
A figura a seguir mostra uma linha em um espaço 2D conectando os pontos P1(3,2) e P2(5,6).
As linhas são primitivas gráficas fundamentais em sistemas gráficos, sendo usadas em praticamente 
todas as aplicações gráficas. Elas são comumente aplicadas para representar bordas ou contornos de 
objetos, ou para desenhar diagramas ou gráficos.
-6
-6
6
6
x
y
-5
-5
5
5
-4
-4
4
4
-3
-3
3
3
-2
-2
2
2
P2(5,6)
-1-1 1
1
P1(3,2)
Figura 3
Polígono
É uma forma geométrica fechada e plana definida por uma sequência de pontos conectados 
por linhas retas. Um polígono com n vértices é chamado de n-gon. A representação matemática 
de um polígono é dada por uma lista de pares ordenados que indicam seus vértices, ou seja, 
P = [(x1, y1), (x2, y2),..., (xn, yn)]. 
Um polígono é uma primitiva gráfica usada para representar formas geométricas fechadas com 
três ou mais lados em um espaço 2D ou 3D. É definido por uma sequência de pontos de controle que 
determinam as coordenadas dos vértices do polígono. A representação matemática de um polígono 
pode ser obtida a partir da equação da linha que conecta cada par de pontos de controle.
A figura a seguir ilustra um exemplo de polígono, um triângulo, definido pelos pontos de controle 
P1, P2 e P3.
Os polígonos são primitivas gráficas muito utilizadas em sistemas gráficos, especialmente em 
softwares de modelagem 3D e jogos. Eles são frequentemente usados para representar formas 
geométricas complexas, como personagens, veículos, edifícios, paisagens e outros objetos.
18
Unidade I
-6
-6
6
6
x
y
-5
-5
5
5
-4
-4
4
4
-3
-3
3
3
-2
-2
2
2
-1-1 1
1 P1(2,2)
P3(4,5)
P2(6,2)
Figura 4 
Retângulo
É um polígono com quatro lados, e seus lados opostos são paralelos e iguais. Um retângulo é definido 
por suas coordenadas (x, y), sua largura e altura. Sua representação matemática é R = (x, y, w, h), onde w é a 
largura e h é a altura do retângulo. Ele é uma primitiva gráfica usada para representar formas retangulares 
em um espaço 2D ou 3D. Os pontos de controle dos vértices opostos do retângulo determinam as 
suas dimensões e sua posição.
Os retângulos são muito utilizados em sistemas gráficos, especialmente em softwares de desenho 
vetorial, diagramação e interfaces gráficas de usuário, por exemplo, para representar botões, caixas de 
texto, barras de rolagem, imagens e outros elementos gráficos comuns em interfaces de usuário.
A figura a seguir destaca um retângulo com coordenadas (2, 2), largura 4 e altura 3.
-6
-6
6
6
x
y
-5
-5
5
5
-4
-4
4
4
-3
-3
3
3
-2
-2
2
2
-1-1 1
1 P1(2,2)
Figura 5
Círculo
É uma forma geométrica definida por um ponto central (xc, yc) e um raio r. A representação matemática 
de um círculo é (x – xc)
2 + (y – yc)
2 = r2. O círculo também é uma primitiva gráfica usada para representar 
formas circulares em um espaço 2D ou 3D, e a coordenada do centro e o tamanho do raio determinarão 
sua posição e sua dimensão (tamanho). 
19
COMPUTAÇÃO GRÁFICA
O círculo é muito utilizado em sistemas gráficos, sobretudo em softwares de desenho vetorial, 
diagramação e interfaces gráficas de usuário, por exemplo, para representar botões, ícones, elementos 
de logotipos e outros elementos gráficos que requerem formas circulares.
A figura a seguir ilustra um exemplo de círculo definido pelo centro (2, 2) e raio 1.
-6
-6
6
6
x
y
-5
-5
5
5
-4
-4
4
4
-3
-3
3
3
-2
-2
2
2
-1-1 1
1 P1(2,2)P1(2,2)
Figura 6 
Elipse 
É uma forma geométrica que se assemelha a um círculo achatado ou esticado. Os elementos 
principais são os focos F1 e F2, o eixo maior e o eixo menor. A equação matemática que representa uma 
elipse é dada por:
( ) ( )2 2c c
2 2
x - x y - y
+ =1
a b
Onde (xc, yc) é o centro da elipse, a é a distância do centro até um dos focos e b é a metade da 
dimensão do eixo menor.
As elipses são primitivas gráficas muito utilizadas em sistemas gráficos, como em softwares de 
desenho vetorial e de modelagem 3D. Por exemplo, em um software de desenho vetorial, o usuário 
pode criar uma elipse e ajustar seus parâmetros para criar formas curvas e arredondadas. Já em um 
software de modelagem 3D, a elipse pode ser usada como uma forma básica para modelar objetos 
mais complexos.
A figura a seguir mostra as representações gráficas de elipses, quando o eixo maior é paralelo ao 
eixo y e quando o eixo maior é paralelo ao eixo x.
20
Unidade I
F2
F1
A2y0 + a
y0 + c
y0 - c
O
y0 - a
x0 - b Xx0 + bx0
y0
Y
C B2B1
A1
Y
X F2F1A1 A2
y0 - b
y0 + b
O x0 - a x0 - c x0 + c x0 + a Xx0
y0
Y
B2
B1
Y
X
C
Figura 7 
Adaptada de: Delgado, Frensel e Crissa (2012).
 Observação
A elipse é obtida fazendo-se um corte inclinado em um cone.
Curva de Bézier
É uma curva definida por um conjunto de pontos de controle que determinam sua forma. Uma curva 
de Bézier é uma primitiva gráfica usada para criar curvas suaves em um plano 2D ou em um espaço 
3D. Trata-se de uma função paramétrica que descreve a posição do ponto da curva para cada valor do 
parâmetro t. A representação matemática de uma curva de Bézier é dada por:
( )
N
n
i i
i=0
C t = PB (t)∑
Onde são polinômios de Bernstein e são os pontos de controle previamente selecionados 
As figuras a seguir ilustram duas curvas de Bézier, de grau 2 e grau 3, respectivamente, concebidas 
através de uma construção recursiva.
P0 P0
P2
P3
P1
P2t=.25 t=.25
Q0 Q0
Q2
Q
R
R0
B
Q1
B
Figura 8
Adaptada de: Machado (2013).
21
COMPUTAÇÃOGRÁFICA
As curvas de Bézier são primitivas gráficas muito utilizadas em sistemas gráficos, como jogos, 
animação, visualização científica, gráficos vetoriais e em outras aplicações que envolvam a criação e 
exibição de imagens. Elas permitem que o usuário crie curvas suaves e precisas com facilidade, dando 
mais flexibilidade e controle ao processo de criação.
Combinando todas essas primitivas, os desenvolvedores podem criar imagens mais complexas e 
objetos 3D, tornando possível a criação de um conteúdo visual impressionante.
 Saiba mais
Para saber mais sobre a importância das curvas de Bézier, acesse:
MACHADO, F. C. Primeiro projeto de análise numérica II. Curvas de Bézier 
e desenho de fontes tipográficas. Campinas: Unicamp, 2013. Disponível em: 
https://bit.ly/3GhE8eA. Acesso em: 30 mar. 2023.
1.4 Primitivas com funções de linguagem
As primitivas gráficas podem ser vistas como funções de linguagem em sistemas gráficos. Em geral, 
elas são implementadas como sub-rotinas ou procedimentos que recebem como entrada os parâmetros 
necessários para desenhar a primitiva e produzem como saída a representação gráfica da primitiva na tela ou 
no dispositivo de saída. Por exemplo, a primitiva gráfica linha pode ser implementada como uma função que 
recebe como parâmetros as coordenadas dos pontos inicial e final da linha e a cor da linha a ser desenhada. 
Essa função calcula os pixels correspondentes à linha usando algoritmos de rasterização e desenha a linha na 
tela ou no dispositivo de saída usando a cor especificada.
Um pixel é a menor unidade de uma imagem digital. É uma abreviação para elemento de imagem 
(picture element, em inglês), e é comumente usado para medir a resolução de uma imagem digital. 
Um pixel é uma pequena unidade quadrada que pode conter uma cor específica. Em uma imagem 
digital colorida, um pixel é geralmente composto de três subpixels, cada um dos quais representa 
uma das cores primárias (vermelho, verde e azul) em diferentes intensidades. Quando combinados, 
esses subpixels criam uma ampla gama de cores visíveis. A resolução de uma imagem digital é medida 
pelo número de pixels em uma determinada área: quanto maior a quantidade de pixels, haverá mais 
qualidade e nitidez em uma imagem. 
A proporção de pixels (Pixel Aspect Ratio (PAR)) pode variar de acordo com a situação. PAR é a relação 
de aspecto entre a largura e a altura de um pixel em um sistema de vídeo digital. Isso é importante 
porque, embora um pixel seja normalmente considerado um quadrado perfeito, nem sempre é assim em 
todas as situações.
Em alguns sistemas de vídeo digital, como o antigo padrão de televisão analógica NTSC, os pixels 
são retangulares em vez de quadrados, o que significa que a relação entre a largura e a altura do pixel 
22
Unidade I
é diferente de 1:1. Em tais casos, o pixel aspect ratio é usado para corrigir a aparência da imagem, 
garantindo que ela seja exibida com as proporções corretas.
Por exemplo, se um vídeo tem um PAR de 1:2, isso significa que cada pixel é duas vezes mais 
alto do que é largo. Quando exibida em um dispositivo com um PAR de 1:1, a imagem pode parecer 
esticada ou comprimida horizontalmente, então o software de reprodução de vídeo pode ajustar o 
tamanho dos pixels para corrigir a aparência da imagem. A figura a seguir ilustra um exemplo de 
um PAR de 2:1.
Figura 9
Disponível em: https://bit.ly/3lOZVU0. Acesso em: 30 mar. 2023.
As primitivas gráficas são algumas das principais ferramentas utilizadas na computação gráfica 
para desenhar objetos e imagens na tela ou no dispositivo de saída. Elas são a base para a criação de 
algoritmos mais complexos, que permitem criar formas mais elaboradas e efeitos visuais.
As primitivas gráficas definidas por funções de linguagem são aquelas que utilizam comandos ou 
instruções para criar imagens. Algumas dessas primitivas incluem:
• Texto: é uma primitiva gráfica que permite escrever palavras e frases na tela. A representação 
matemática do texto é dada pela posição do cursor e pelos caracteres que são desenhados na 
tela. A figura a seguir, uma tela da aplicação Paint, do sistema operacional Windows, mostra um 
exemplo de texto na tela com a escrita “COMPUTAÇÃO GRÁFICA”. Note que no canto inferior 
esquerdo há a referência da posição do cursor (296,177px).
23
COMPUTAÇÃO GRÁFICA
Figura 10 
• Preenchimento de cor: é uma primitiva gráfica que permite preencher uma área com uma 
cor sólida. A representação matemática do preenchimento de cor é dada pela posição do 
ponto de partida e pela cor que é usada para preencher a área. A figura a seguir ilustra um 
exemplo de preenchimento de cor.
Figura 11 
• Transformações geométricas: são primitivas gráficas que permitem mover, rotacionar, 
redimensionar e espelhar objetos na tela. A representação matemática dessas transformações é 
dada por matrizes de transformação. A figura seguinte destaca a transformação geométrica da 
reflexão em torno do eixo y e do eixo x de uma imagem.
24
Unidade I
Reflexão em torno do x
A'(x,-y)
x
y
Reflexão em torno do y
A(x,y)A'(-x,y)
x
y
Figura 12
• Gradientes: são primitivas gráficas que permitem criar transições suaves entre duas ou mais 
cores. A representação matemática dos gradientes é dada pela posição do ponto de partida e 
do ponto de término, além das cores que são usadas na transição. A figura a seguir acentua um 
exemplo de gradiente na tela.
Figura 13 
Esses são apenas alguns exemplos de primitivas gráficas com funções de linguagem. Cada uma 
dessas primitivas possui um modelo matemático específico que define como elas funcionam e como 
podem ser utilizadas para criar imagens na tela.
25
COMPUTAÇÃO GRÁFICA
1.5 Pacotes gráficos e bibliotecas principais
Em computação gráfica, os pacotes gráficos são conjuntos de ferramentas de software para criação, 
edição e renderização de imagens digitais. Eles geralmente incluem uma ampla variedade de recursos, 
como modelagem 3D, animação, texturização, iluminação e efeitos especiais.
Algumas das principais opções de pacotes gráficos incluem:
• Autodesk Maya
• Autodesk 3ds Max
• Blender
• Cinema 4D
• Houdini
• Unity
Por outro lado, as bibliotecas principais são conjuntos de código pré-escrito que fornecem 
funcionalidades específicas para a criação de gráficos em um determinado ambiente de programação. 
Essas bibliotecas podem ser usadas para criar aplicativos de jogos, visualização de dados, interfaces de 
usuário e muito mais.
Algumas das principais bibliotecas gráficas incluem:
• OpenGL (para gráficos 3D).
• DirectX (para jogos em plataformas Windows).
• Vulkan (para jogos em plataformas multiplataforma).
• WebGL (para gráficos 3D em navegadores da web).
• Cairo (para gráficos 2D em várias plataformas).
• OpenCV (para processamento de imagens em tempo real).
As bibliotecas e pacotes gráficos são uma parte crucial do desenvolvimento de jogos, animações, 
visualizações e outras aplicações gráficas em computadores e dispositivos móveis. A escolha de 
qual pacote ou biblioteca usar depende das necessidades específicas do projeto e das habilidades 
do desenvolvedor.
Existem várias bibliotecas principais em computação gráfica, cada uma com suas próprias 
características e funcionalidades específicas. A seguir são acentuadas algumas das principais:
26
Unidade I
• OpenGL: uma biblioteca de gráficos 3D de plataforma cruzada que é amplamente usada em 
jogos, visualização de dados, CAD e outras aplicações.
• DirectX: uma coleção de APIs (interfaces de programação de aplicativos) que são usadas 
principalmente para desenvolver jogos e aplicativos multimídia em plataformas Windows.
• Vulkan: uma biblioteca de gráficos 3D de baixo nível que foi projetada para aproveitar ao 
máximo o desempenho dos processadores gráficos modernos. É uma alternativa de baixo nível 
para o OpenGL.
• OpenCV: uma biblioteca de código aberto que fornece ferramentas para processamento de 
imagens em tempo real, visão computacional e aprendizado de máquina.
• Cairo: uma bibliotecade gráficos 2D que é usada para renderizar imagens e textos em 
várias plataformas.
• SFML: uma biblioteca de gráficos 2D que é usada para desenvolver jogos e outras aplicações 
multimídia em C++.
• SDL: uma biblioteca de gráficos e entrada de usuário multiplataforma que é usada principalmente 
para desenvolver jogos em C/C++.
Essas são apenas algumas das principais bibliotecas em computação gráfica. A escolha da biblioteca 
certa depende das necessidades específicas do projeto e das habilidades do desenvolvedor.
As bibliotecas gráficas geralmente fornecem funções e métodos para criar e manipular objetos 
gráficos, como retângulos, círculos e polígonos, bem como para desenhar e renderizar imagens, texto 
e outros elementos gráficos. As bibliotecas também podem fornecer funcionalidades avançadas, 
como suporte para animação, sombras, reflexos e iluminação em tempo real.
Elas funcionam como um conjunto de ferramentas que o desenvolvedor pode usar para criar a 
aparência visual e interativa de um aplicativo. Por exemplo, se um desenvolvedor quiser criar um 
jogo 2D, ele poderá usar uma biblioteca gráfica como a SFML para criar os gráficos do jogo, lidar 
com entrada do usuário, gerenciar sprites e animações, entre outras funcionalidades.
A biblioteca gráfica é geralmente usada com uma linguagem de programação, como C++, Java ou 
Python, e é integrada no código do aplicativo por meio da inclusão de cabeçalhos de bibliotecas e a 
chamada de funções fornecidas pela biblioteca em diferentes partes do código.
Elas fornecem aos desenvolvedores uma maneira mais fácil e rápida de criar gráficos complexos e 
visualmente atraentes em seus aplicativos, sem precisar escrever todo o código do zero.
27
COMPUTAÇÃO GRÁFICA
2 PRIMITIVAS GRÁFICAS EM DUAS DIMENSÕES
Em computação gráfica, elas são formas geométricas básicas que podem ser usadas para criar 
imagens e gráficos em uma tela ou superfície. As mais comuns em duas dimensões são:
• Pontos: usada para representar um único pixel na tela. Os pontos são usados para desenhar 
linhas, curvas e outras formas.
• Linhas: aplicada para conectar dois pontos. As linhas podem ser usadas para criar desenhos 
simples, diagramas e gráficos.
• Retângulos: utilizada para criar formas retangulares. Os retângulos podem ser preenchidos ou 
vazios e podem ser usados para criar botões, menus e outros elementos de interface do usuário.
• Elipses: empregada para criar formas ovais. As elipses podem ser preenchidas ou vazias e podem 
ser usadas para criar gráficos e diagramas.
• Polígonos: aplicada para criar formas com muitos lados. Os polígonos podem ser preenchidos ou 
vazios e podem ser usados para criar formas complexas, como diagramas de fluxo.
As primitivas gráficas em duas dimensões são usadas para criar imagens e gráficos simples, mas 
também são a base para a criação de gráficos mais complexos, como diagramas, gráficos e jogos em 2D. 
Elas podem ser manipuladas por meio de funções e métodos em bibliotecas gráficas para criar desenhos 
e gráficos visualmente atraentes.
2.1 Pontos, vetores e matrizes em CG
Em computação gráfica, pontos, vetores e matrizes são conceitos importantes que são usados para 
representar objetos e operações geométricas em um espaço tridimensional. A seguir, destacam-se as 
definições de cada um desses conceitos:
• Ponto: é uma representação abstrata de uma posição no espaço tridimensional. Ele é definido 
por um conjunto de coordenadas (x, y, z) que indicam sua posição relativa a um sistema de 
coordenadas. Na computação gráfica, os pontos são frequentemente usados para representar 
vértices de objetos e para descrever a posição da câmera e do observador.
• Vetor: um vetor é uma entidade matemática que representa uma magnitude e uma direção 
no espaço tridimensional. Ele é definido por um conjunto de coordenadas (x, y, z) que indicam 
sua direção e seu comprimento. Os vetores são comumente usados na computação gráfica para 
representar movimentos, rotações e escalas de objetos.
• Matriz: é uma estrutura de dados bidimensional que armazena valores numéricos organizados 
em linhas e colunas. Na computação gráfica, as matrizes são normalmente usadas para realizar 
operações lineares em objetos geométricos, como transformações de rotação e escala e translação. 
28
Unidade I
As matrizes são especialmente úteis na computação gráfica, pois elas podem ser compostas para 
realizar operações complexas.
Vamos considerar um vetor V para o ponto (x,y), tendo uma direção, um sentido e um comprimento 
específico. Podemos utilizar a fórmula a seguir para calcular o seu comprimento:
2 2V = x +y
Então, se pensarmos em um vetor 3D, cuja definição de origem é o ponto (x,y,z), usa-se a fórmula a 
seguir para calcular seu comprimento:
2 2 2V = x +y +z
Quando trabalhamos com computação gráfica, utilizamos frequentemente matrizes. O primeiro 
passo é definir quantos elementos existem em cada direção, por exemplo: a seguir podemos observar 
uma matriz 5x5.
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
Em resumo, pontos, vetores e matrizes são conceitos fundamentais na computação gráfica 
que permitem representar objetos e operações geométricas em um espaço tridimensional. Eles são 
normalmente usados com bibliotecas gráficas para criar gráficos e animações visualmente atraentes 
e interativas.
Para definir e modelar os objetos sintéticos que representaremos nas imagens, utilizamos a representação 
vetorial. Eduardo Azevedo e Aura Conci (2003b, p. 15) exemplificaram a representação vetorial:
 
Na representação vetorial das imagens, são usados como elementos básicos 
os pontos, as linhas, as curvas, as superfícies tridimensionais ou mesmo os 
sólidos que descrevem os elementos, que formam as imagens sinteticamente 
no computador. Esses elementos são denominados primitivas vetoriais da 
imagem. As primitivas vetoriais são associadas a um conjunto de atributos 
que define sua aparência e a um conjunto de dados que define sua 
geometria (pontos de controle). Para esclarecer melhor, vamos considerar 
alguns exemplos. Dois elementos facilmente caracterizados como vetoriais, 
pela noção de vetores já discutida, são os pontos e as linhas retas. A cada 
elemento de um conjunto de pontos associa-se uma posição, que pode ser 
representada por suas coordenadas (geometria), e uma cor, que será como 
29
COMPUTAÇÃO GRÁFICA
esses pontos aparecerão na tela (atributos). No caso de um conjunto de 
linhas retas, cada uma pode ser definida pelas coordenadas de seus pontos 
extremos (geometria) e sua cor, espessura, ou ainda se aparecerá pontilhada 
ou tracejada (atributos)
A representação matricial é uma forma de indicar imagens digitais em uma matriz numérica 
de pixels. Cada pixel é designado por um conjunto de valores numéricos que determinam sua cor 
e intensidade.
A matriz de pixels é geralmente organizada em linhas e colunas, em que cada elemento da matriz 
representa um pixel específico na imagem. Cada pixel pode ser indicado por uma combinação de valores 
RGB (vermelho, verde e azul) ou outros sistemas de cores, como o sistema CMYK (ciano, magenta, 
amarelo e preto) utilizado na impressão.
A representação matricial é usada em diversos algoritmos de computação gráfica, como 
processamento de imagem, reconhecimento de padrões, filtragem de imagens e renderização de 
objetos tridimensionais. Ela permite que as imagens sejam manipuladas de forma eficiente em 
nível de pixel, o que é essencial para muitas aplicações de gráficos por computador. Além disso, a 
representação matricial é aplicada em outros contextos da computação gráfica, como a modelagem 
de objetos em 3D, em que as malhas tridimensionais são indicadas por matrizes numéricas que 
descrevem suas coordenadas e propriedades.
A figura a seguir exemplifica a forma de descrição de imagem matricial. É utilizada para formar a 
imagem na memória, nas telas dos computadores e nos dispositivos gráficos de saída (vídeos e impressoras).
Imagem na telaMemória de imagem
0
0 0
1 00000000000
0 0 0 000 0
0 0 0 0 00011 1
11111
0
0000000 0 0 0
0 0 00
1
1
1
1
1
1
1
1
1
111111 1
0 00 0 0 00
0 0 0 0 0 0 0 0 0
0 0 0
0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 10
00 0 0 0 0 00 0 0 00
Figura 14 – Descrição de imagens matriciais por conjunto de pixels
Fonte: Azevedo e Conci (2003a, p. 15).
O modelo matemático em computação gráfica é um conjunto de equações e algoritmos que 
descrevem como os objetos são representados e manipulados em um espaço tridimensional. Essas 
equações e algoritmos são implementados em software de computador para criar imagens e animações 
em tempo real.
30
Unidade I
Algumas das principais equações e algoritmos utilizados no modelo matemático em computação 
gráfica incluem:
• Transformações geométricas: essas equações permitem que os objetos sejam transformados 
em um espaço tridimensional, incluindo rotações, translações e escalas.
• Algoritmos de rasterização: convertem objetos geométricos em pixels na tela. Eles são usados 
para criar imagens realistas em tempo real.
• Algoritmos de iluminação: calculam como a luz interage com os objetos na cena. Eles são 
usados para criar sombras, reflexões e outras propriedades visuais realistas.
• Algoritmos de sombreamento: calculam a cor de cada pixel na imagem com base na iluminação 
e nas propriedades do material do objeto.
• Algoritmos de mapeamento de texturas: permitem que as texturas sejam aplicadas aos objetos 
na cena para criar superfícies mais realistas.
Alguns exemplos de recursos em computação gráfica que são criados a partir do modelo 
matemático incluem:
• Jogos: jogos em computador usam o modelo matemático para criar ambientes 3D, personagens 
e animações.
• Filmes de animação: utilizam o modelo matemático para criar cenas e personagens em 3D.
• Visualização científica: aplica o modelo matemático para representar dados complexos em um 
espaço tridimensional.
• Design de produto: emprega o modelo matemático para criar modelos 3D de produtos, 
permitindo que eles sejam visualizados em diferentes ângulos e iluminações antes de serem 
produzidos fisicamente.
O modelo matemático é uma parte fundamental da computação gráfica e é usado para criar uma 
ampla variedade de recursos, desde jogos e filmes até visualização científica e design de produto. Ele 
usa uma variedade de equações e algoritmos para representar objetos e operações geométricas em um 
espaço tridimensional e é implementado em software de computador para criar imagens e animações 
em tempo real.
31
COMPUTAÇÃO GRÁFICA
2.2 Sistemas de referência (universo, objeto, dispositivo)
Servem para definir um espaço tridimensional em que objetos são representados e manipulados. 
Geralmente, eles são compostos de um conjunto de eixos e um ponto de origem que, juntos, definem 
um espaço tridimensional. São eles:
• Sistema de coordenadas cartesianas: é um sistema de referência formado por dois ou três eixos 
perpendiculares entre si (2D e 3D, respectivamente) e um ponto de origem O. Cada eixo é composto 
de valores numéricos que indicam a posição relativa de um objeto no espaço bi ou tridimensional.
x
xy
y
(x,y)(x,y)
o o
z
(x,y,z)(x,y,z)
Figura 15 – Sistema de coordenadas cartesianas em 3D (x,y,z) e em 2D (x,y)
• Sistema de coordenadas cilíndricas: é um sistema de referência que combina um eixo vertical 
com um sistema de coordenadas polares. O eixo vertical representa a altura do objeto, enquanto 
o sistema de coordenadas polares descreve a posição do objeto em relação a um ponto central.
• Sistema de coordenadas esféricas: é um sistema de referência que usa um ponto central e duas 
coordenadas angulares para descrever a posição de um objeto. O ângulo theta indica a posição do 
objeto no plano horizontal, enquanto o ângulo phi expressa a posição do objeto no plano vertical.
• Sistema de coordenadas polares: neste sistema bidimensional, cada ponto no plano é descrito 
por um ângulo e uma distância radial em relação a um ponto de referência chamado de polo. 
O polo é geralmente representado por um ponto central na origem do sistema de coordenadas.
A figura a seguir mostra três sistemas de coordenadas.
Coordenadas esféricas Coordenadas cilíndricas
Coordenadas polares
PP
x
y
z
P(x,y,z)P(x,y,z)
θθ
rr ψψ
θθ
rr
PP
θθrr
Figura 16 
Fonte: Azevedo e Conci (2003a, p. 36).
32
Unidade I
Em computação gráfica, para a criação de imagens, devemos considerar quatro tipos de sistemas de 
referência principais, os quais são usados para definir a posição e a orientação dos objetos em relação 
ao espaço tridimensional. São eles:
• Sistema de Referência Universo (SRU): é um sistema global que é utilizado para definir a 
posição dos objetos em relação a um ponto fixo no espaço, geralmente o ponto de origem do 
sistema de coordenadas cartesianas. Ele é importante para definir a posição inicial dos objetos 
em uma cena.
• Sistema de Referência Objeto (SRO): é um sistema local que é usado para definir a posição 
e a orientação de um objeto em relação ao SRU. Cada objeto pode ter seu próprio sistema de 
referência objeto, que é usado para realizar transformações geométricas em relação a outros 
objetos na cena.
• Sistema de Referência Dispositivo (SRD): é empregado para representar a saída gráfica, ou seja, 
a imagem final que será exibida na tela do dispositivo. 
• Sistema de Referência Normalizado (SRN): trabalha com as coordenadas normalizadas, isto 
é, com valores entre 0 e 1, onde 0 ≤ x ≤ 1 e 0 ≤ y ≤ 1, sendo x e y as coordenadas horizontais e 
verticais. O SRN serve como um sistema de referência intermediário. 
Sistema de referência do objeto Sistema de referência do dispositivoSistema de referência normalizado
Sistema de referência do universo
Figura 17 
Fonte: Azevedo e Conci (2003a, p. 37).
Os sistemas de referência SRU, SRO e SRD são usados em computação gráfica para realizar operações 
geométricas, como rotações, translações e escalas, em objetos no espaço tridimensional. Essas operações são 
realizadas com base nas coordenadas dos objetos em relação ao sistema de referência.
Além disso, os sistemas de referência são usados para definir a posição da câmera e do observador 
na cena. Isso permite que o software de computador crie imagens realistas em tempo real, mostrando a 
cena a partir do ponto de vista do observador.
O SRU é usado para definir a posição inicial dos objetos em uma cena. Já o SRO é aplicado para 
realizar transformações geométricas em relação a outros objetos na cena. Por sua vez, o SRD é utilizado 
para mapear as coordenadas da cena em coordenadas do dispositivo para a rasterização e renderização 
33
COMPUTAÇÃO GRÁFICA
final da imagem. Todos eles são fundamentais para a construção e manipulação de objetos em uma 
cena de computação gráfica.
O modelo matemático empregado em computação gráfica é baseado em geometria analítica, álgebra 
linear, cálculo e outras áreas da matemática. Ele é usado para descrever a posição, a orientação, a forma, 
o tamanho e a cor dos objetos em uma cena de computação gráfica.
2.3 Mapeamento window to viewport
Devemos ter em mente que, em computação gráfica, a primitiva ponto, ente matemático, sem 
dimensão, transforma-se em pixel menor unidade gráfica manipulável (pixel: de picture element).
Ao contrário do ponto, o pixel tem forma, dimensão, mas esses atributos não são, em geral, 
manipuláveis diretamente através de funções, dependem do hardware.
Por outro lado, tanto o ponto quanto o pixel são objetos de um desenho que se inscreve em um 
espaço bidimensional. No caso do ponto matemático, tal espaço pertence ao R2. Já o pixel é um elemento 
de uma matriz de tamanho W x H (Width – largura; Height – altura, em pixels, da matriz do dispositivo 
gráfico de saída), cujas coordenadas pertencem ao N2. Destaca-se que R é o conjunto dos números reais 
e N é o conjunto dos naturais. Assim, podemos atribuir ao pixel apenas duas propriedades fundamentais: 
cor e posição.
Como as coordenadas do Ponto, que formam um vetor com valores no espaço real, e as 
coordenadasdo Pixel são elementos de uma matriz, possuindo coordenadas inteiras e positivas, 
devemos converter os valores adequadamente.
Esse cálculo é denominado mapeamento window-to-viewport. Podemos chamá-lo de rasterização 
do ponto, já que o termo rasterização (rastering) é o processo de converter vetores para pixels em 
dispositivos raster (lembre-se de que as coordenadas de um ponto são uma grandeza vetorial).
Sejam XR e YR as coordenadas (reais) de um ponto pertencente ao R2 e XP e YP (o P refere-se a Pixel) 
as coordenadas do pixel correspondente (inteiros positivos) na matriz gráfica (tela ou canvas).
As coordenadas reais (XR, YR) são, muitas vezes, referidas como coordenadas do universo (ou do 
mundo) e estão descritas no SRU.
Por outro lado, as coordenadas inteiras (XP, YP) são descritas no sistema de referência do dispositivo 
(SRD). Quando elas representam diretamente os valores das linhas e colunas no dispositivo gráfico, 
portanto valores inteiros que correspondem aos índices dos elementos da matriz de pixel, serão referidas 
como coordenadas do dispositivo. Caso essas coordenadas expressem os valores reais de seus respectivos 
pontos no SRU, serão referidas como coordenadas lógicas.
34
Unidade I
Uma vez que o espaço disponível para desenho no dispositivo gráfico de saída é limitado pela matriz 
de pixels, devemos especificar os valores mínimos e máximos de uma janela de visualização, denominada 
viewport, na qual visualizaremos o nosso modelo matemático (desenho, função etc.)
Portanto, a viewport corresponde a uma área no interior da matriz de pixels do dispositivo de 
saída gráfica. Ela pode corresponder a toda a matriz, como pode haver várias viewports no dispositivo, 
sobrepostas ou não.
Já o plano cartesiano onde localizamos as coordenadas reais (XR, YR) é infinito. Para representarmos 
qualquer modelo matemático desse espaço no interior da viewport, devemos definir um domínio que 
contenha os objetos a serem representados. Esse domínio será chamado de window. A window tem 
o mesmo papel de uma janela no sentido comum, através da qual vemos uma cena que queremos 
representar. Cada elemento primitivo descrito no interior da window será, então, mapeado na viewport.
Como vimos, os objetos geométricos são descritos (modelados) no SRO. Veja o esquema de 
mapeamento mostrado na figura a seguir.
SRO SRU
window viewport
SRD
Figura 18 
Na figura temos o esquema SRO-SRU-SRD. À esquerda, três primitivas (triângulo, quadrado e o sol) 
modelados no SRO, normalizado no intervalo [-1,1]. Ao centro, uma composição com essas primitivas, 
devidamente transformadas, rotação, escala e translação, inseridas no SRU com a respectiva window. 
À direita, temos um exemplo de dispositivo de saída gráfica com uma viewport exibindo a cena 
contida na window. Observe as distorções e recortes da cena. O piso é formado pela mesma primitiva, 
quadrado, repintada de verde.
2.4 Mapeamento de pontos (pixels) na janela de visualização
O mapeamento window-to-viewport ocorre diretamente entre os SRU e o SRD, mas podemos usar 
as coordenadas lógicas como coordenadas intermediárias no mapeamento.
O sistema de referência utilizado na modelagem de objetos é o SRN, que nada mais é do que o SRO 
limitado no intervalo [0, 1] ou [-1, 1] em cada uma de suas coordenadas.
35
COMPUTAÇÃO GRÁFICA
Sejam, portanto, XRMIN e XRMAX os valores mínimos e máximos horizontais da janela no espaço 
cartesiano (window) e XPMIN e XPMAX os valores correspondentes em pixel (viewport). YRMIN, YRMAX, 
YPMIN e YPMAX serão os valores limites na vertical (conforme a figura a seguir). A transformação (XR,YR) 
para (YP,YP) é obtida por meio de um simples cálculo de proporcionalidade (regra de três simples!). Para 
a coordenada horizontal (coordenada x), a transformação é:
YRMAX
YRMIN
XRMIN XRMAX XPMIN XP XPMAX (Width,Height)
YP
YPMIN
(0.0)
(XP,YP)(XR,YR)
YPMAX
YR
XR
Figura 19 
Resolvendo XP em função de XR, temos: 
XP - XPMIN XPMAX - XPMIN
=
XR - XRMIN XRMAX - XRMIN
( )( )XR - XRMIN XPMAX - XPMIN
XP - XPMIN =
XRMAX - XRMIN
( )( )XR - XRMIN XPMAX - XPMIN
XP = + XPMIN
XRMAX - XRMIN
Denominando-se 
XPMAX-XPMIN
SX=
XRMAX-XRMIN
 como fator de escala horizontal, temos:
Com XR em função de XP, temos:
XR - XRMIN XRMAX - XRMIN
 = 
XP - XPMIN XPMAX - XPMIN
( )( )XP - XPMIN XRMAX - XRMIN
XR - XRMIN = 
XPMAX - XPMIN
( )( )XP - XPMIN XRMAX - XRMIN
XR= + XRMIN
XPMAX - XPMIN
36
Unidade I
Denominando-se 
XPMAX-XPMIN
SX=
XRMAX-XRMIN
 como fator de escala horizontal, temos:
( )XP - XPMIN
XR = + XRMIN
SX
Expressões análogas são obtidas da mesma forma para a transformação da coordenada vertical (y).
Ao implementarmos essas expressões em alguma linguagem de programação, devemos observar 
os tipos primitivos das variáveis (XR, YR) e (XP, YP). As primeiras são de tipo real, ponto flutuante, e as 
outras são de tipo inteiro, o que exige converter adequadamente os tipos.
 Observação
A origem do sistema de coordenada em uma viewport é no canto 
superior esquerdo da janela de visualização. Por isso, atente-se ao montar 
a regra de três.
Exemplo de aplicação
Seguindo o raciocínio desenvolvido nos últimos parágrafos, obtenha as relações de YP em função 
de YR e de YR em função de YP. Considere que os limites da window e da viewport na vertical são, 
respectivamente, (YRMIN, YRMAX) e (YPMIN, YPMAX). 
Onde
YPMAX - YPMIN
 SY=
YRMAX - YRMIN
YP - YPMAX YPMIN - YPMAX
 = 
YR - YRMIN YRMAX - YRMIN
( )( )YR - YRMIN YPMIN - YPMAX
YP = + YPMAX
YRMAX - YRMIN
YP = -SY (YR - YRMIN ) + YPMAX
YPMAX - YPMIN
SY = 
YRMAX - YRMIN
37
COMPUTAÇÃO GRÁFICA
YR - YRMIN YRMAX - YRMIN
 = 
YP - YPMAX YPMIN - YPMAX
( )- YP - YPMAX
YR = + YRMIN
SY
YP - YPMAX
YR = YRMIN - 
SY
 
 
 
Considere o ponto P, pertencente ao SRU, cujas coordenadas (XR,YR) são P = (-1.45, 0.32). Sabendo que 
as coordenadas que definem a window são XRMIN = YRMIN = -2.0 e XRMAX = YRMAX = +2.0, qual o valor 
correspondente das coordenadas (XP,YP) do pixel em uma viewport de coordenadas XPMIN = YPMIN = 0, 
XPMAX = 1023 e YPMAX = 767?
Lembre-se de que:
XP = SX (XR - XRMIN) + XPMIN
YP = -SY YR - YRMIN) + YPMAX
XP = SX (XR - XRMIN)+XPMIN
XPMAX - XPMIN
SX = 
XRMAX - XRMIN
e
YP = -SY (YR - YRMIN)+YPMAX
YPMAX - YPMIN
SY = 
YRMAX - YRMIN
( )
( )
1023 – 0
SX = = 255,75
2 – -2
( )
767 – 0
SY = = 191,75
2- -2
38
Unidade I
Logo:
( )XP = 255,75 [-1,45 - -2 ] + 0 = 140.663⋅
( )YP = -191,75 0.32 - -2 + 767 = 322,14⋅   
Como XP e YP são os valores inteiros (coluna e linha no SRD, respectivamente), devem ser 
convenientemente arredondados. Assim: XP = 141; YP = 322.
Para que se entenda o mapeamento window-to-viewport perfeitamente, o resultado anterior 
significa que, uma vez definidas a window e a viewport, o ponto (-1.45, 0.32) no SRU corresponderá ao 
pixel (141, 322) no SRD. 
O mapeamento de pontos na janela de visualização é uma operação importante em computação 
gráfica que permite que os objetos sejam exibidos corretamente na tela. As equações matemáticas 
fornecem um meio de realizar essa operação, transformando as coordenadas normalizadas em 
coordenadas de pixel na janela de visualização.
3 RASTERIZAÇÃO DE LINHAS
Já aprendemos a transformar um ponto do espaço vetorial R2 em um ponto que representa 
um elemento de uma matriz de pixels. Essa transformação ocorre em ambos os sentidos, ou 
seja, de coordenadas cartesianas do SRU para pixels no SRD ou pixels do SRD para coordenadas 
cartesianas no SRU.
Agora veremos como traçar uma linha ligando dois pixels em uma janela de visualização gráfica.
Obviamente que ligar dois pixels mapeando (rasterizando) cada coordenada do SRU para pixel no 
SRD não é a tarefa mais adequada, considerando o tempo de processamento desse algoritmo. Bem 
mais simples é rasterizar apenas os vértices no interior da viewport e uni-los usando apenas os pixels 
existentes na matriz do SRD.
Os algoritmos que estudaremos adiante são o DDA (Digital Differential Analyser) e o de Bresenham.
Contudo, antesde conhecermos esses algoritmos, é fundamental relembrarmos alguns conceitos da 
geometria analítica.
3.1 Equação da reta
É uma função matemática que descreve uma linha em um sistema de coordenadas cartesianas. 
É vital entender e saber manipular algebricamente as diferentes formas em que a equação da reta se 
apresenta, pois em computação gráfica a utilizamos em diversos contextos, por exemplo:
39
COMPUTAÇÃO GRÁFICA
• Rasterização de linhas: usada em algoritmos de rasterização para desenhar linhas em uma tela 
ou imagem. O algoritmo usa a equação da reta para determinar os pixels que devem ser pintados 
para desenhar a linha.
• Transformações geométricas: aplicada em transformações geométricas para mover, rotacionar 
e escalar objetos em uma cena. A equação é usada para mapear pontos de um sistema de 
coordenadas para outro.
• Detecção de colisões: empregada para detectar colisões entre objetos em uma cena. Se 
as equações de duas retas se interceptam em algum ponto, isso significa que os objetos 
correspondentes estão colidindo.
• Renderização de gráficos 3D: utilizada em renderização de gráficos 3D para determinar quais 
objetos estão na linha de visão do observador. Isso é feito traçando uma linha do observador até 
cada ponto da cena e verificando se a linha intercepta algum objeto.
Essas são apenas algumas das aplicações da equação da reta em computação gráfica. A 
equação também é usada em outras áreas, como processamento de imagens, visão computacional e 
simulação de física.
Recordemos que a função f: R→R definida por f(x) = mx + b ou y = mx + b, com m e b ∈ e m ≠ 0, 
tem como gráfico uma reta. 
Pela equação da reta, é possível estudar propriedades dessa reta, assim como, a partir de uma 
propriedade da reta, pode-se identificar a equação.
Conforme já acentuado, essa reta está inserida no sistema de referência cartesiano, composto de 
dois eixos, x e y, ortogonais entre si, e um ponto de origem O (intersecção dos eixos x e y). Os eixos x 
e y formam um plano, e cada eixo é constituído por valores numéricos que, unidos, formam os pares 
ordenados (x,y). Cada par ordenado (x,y) está associado biunivocamente a um único ponto do plano, 
conforme a figura a seguir:
C
D
x
A(3,2)
B 4
2
-1 0
1
-2
-2
-3
y
Figura 20 
40
Unidade I
Quanto ao par ordenado de números reais, temos:
• (0,0) está associado ao ponto O (origem);
• (3,2) está associado ao ponto A;
• (-1,4) está associado ao ponto B;
• (-2,-3) está associado ao ponto C;
• (1,-2) está associado ao ponto D.
Considerando o ponto B(-1,4), dizemos que o número -1 é a coordenada x ou abscissa do ponto B, 
e o número 4 é a coordenada y ou a ordenada do ponto B.
Equação reduzida da reta
Na forma de equação reduzida, ela é denotada por y = mx + b, onde m é a inclinação da linha, 
também chamado coeficiente angular, e b é o intercepto no eixo y. A inclinação ou coeficiente 
angular representa a taxa de variação da linha e pode ser calculada como a diferença entre as 
coordenadas y (∆y) dividida pela diferença entre as coordenadas x (∆x) entre dois pontos na linha. 
O intercepto indica onde a linha cruza o eixo y e, portanto, tem coordenadas (0, b). 
A figura a seguir representa o esquema para obtenção do coeficiente angular m.
y=m
x+b
∆X=XRf-XRi
m=∆Y/∆X
b=YRi-m.XRi
Tan(α)=m
∆Y=YRf-YRi
Pf
Pi
b
αYRi
XRi
YRf
XRf
Figura 21 – Elementos da reta que passa por dois pontos
Assim, para determinar a equação de uma reta que passa por dois pontos, podemos fazer como no 
exemplo a seguir.
41
COMPUTAÇÃO GRÁFICA
Exemplo de aplicação
Determine a equação da reta que passa pelos pontos Pi = (2, 3) e Pf = (4, 7). 
Resolução
Sabendo que a equação da reta é definida pela expressão y = mx +b, devemos determinar os valores 
de m e de b.
Para isso, denominaremos xi = 2, xf = 4, yi = 3 e yf = 7
f i
f i
y y - y 7 - 3
m = = = m = 2
x x - x 4 - 2
⇒


Então, são considerados os valores de m de Pi ou o valor Pf e substituímos na expressão y = mx + b. 
Assim, determina-se o valor de b.
y = mx + b ⇒ 7 = 2 . 4 + b ⇒ b = 7 – 8 = -1
Logo, m = 2 e b = -1
Conclui-se que a equação da reta que passa pelos pontos é Pi e Pf = (4, 7) e y = 2x – 1.
 Observação
A medida do ângulo deve sempre ser considerada do eixo x para a reta, 
no sentido anti-horário.
Equação geral da reta
Já na forma de equação geral, ela é denotada por Ax + By + C = 0. Os coeficientes A, B e C são 
denominados constantes e dependem da inclinação e do intercepto. Outra informação importante é 
que A e B jamais poderão ser nulos (iguais a zero) concomitantemente.
Observe os exemplos a seguir e aprenda como determinar a equação geral da reta a partir de 
outra equação da reta. É possível determinar a equação geral da reta a partir de qualquer outro 
tipo de equação que também a defina.
Exemplos 
Conforme as equações da reta a seguir, determine as respectivas equações gerais.
42
Unidade I
3
y = - x + 1
4
Resolução
Tira-se o m.mc:
4y = -3x + 4
4
Como se trata de uma igualdade, podemos desconsiderar o denominador da fração:
4y = -3x + 4
Iguala-se a equação a 0 passando todos os números para o primeiro membro e assim determina-se 
a equação geral da reta:
3x + 4y – 4 = 0, onde A = 3, B = 4 e C = -4
x y
+ =1
2 5
Resolução
Tira-se o m.mc:
5x + 2y = 10
10
Como se trata de uma igualdade, podemos desconsiderar o denominador da fração:
5x + 2y = 10
Iguala-se a equação a 0 passando todos os números para o primeiro membro e assim determina-se 
a equação geral da reta:
5x + 2y – 10 = 0, onde A = 5, B = 2 e C = -10
y = -5
43
COMPUTAÇÃO GRÁFICA
Resolução
Neste caso, temos uma reta paralela ao eixo x.
Iguala-se a equação a 0 passando todos os números para o primeiro membro e assim determina-se 
a equação geral da reta:
0x + 1y + 5 = 0, A = 0, B = 1 e C = 5
Pode-se também determinar a equação geral da reta a partir de dois pontos conhecidos. Todavia, 
precisamos recordar a condição de alinhamento de três pontos. Vejamos.
y
y3
y2
y1
x1 x2 x3 x
A
B
C
Figura 22 
Ao analisar o gráfico, podemos aplicar as regras de proporcionalidade do teorema de Tales, assim:
x - x
x -x
=
y -
y - y
2 1
3 1
2 1
3 1
y
Multiplicam-se em cruz as expressões:
(x3 – x1) (y2 – y1) = (x2 – x1) (y3 – y1)
Aplica-se a propriedade distributiva da multiplicação:
x3y2 – x3y1 – x1y2 + x1y1 = x2y3 – x2y1 – x1y3 + x1y1
Iguala-se a 0 passando todos os números para o primeiro membro e são feitas as 
simplificações possíveis:
x3y2 – x3y1 – x1y2 + x1y1 – x2y3 + x2y1 + x1y3 – x1y1 = 0
44
Unidade I
Reescreve-se ordenando os termos:
x1y2 – x1y3 + x2y3 – x2y1 + x3y1 – x3y2 = 0
O primeiro termo da igualdade corresponde ao determinante:
x y 1
x y 1
x y 1
1 1
2 2
3 3
Logo, pode-se afirmar que se três pontos A(x1,y1), B(x2,y2) e C(x3,y3) estão alinhados:
x y 1
x y 1
x y 1
 = 0
1 1
2 2
3 3
E que:
x y 1
x y 1
x y 1
 = 0
A A
B B
3 3
Agora que recordamos a condição de alinhamento de três pontos, vejamos um exemplo para 
determinar a equação geral da reta, conhecido por dois pontos.
Observe mais um exemplo a seguir.
Encontre a equação geral da reta que passa pelos pontos A(2,1) e B(4,5).
Resolução
Monta-se o determinante:
x y 1
x y 1
x y 1
 = 0 
A A
B B
3 3
⇒ 
2 1 1
4 5 1
x y 1
 = 0
Calcula-se o determinante pela regra de Sarrus:
2 1 1
4 5 1
x y 1
 2 1
 4 5
 x y
= 0
45
COMPUTAÇÃO GRÁFICA
(2 ∙ 5 ∙ 1 + 1 ∙ 1 ∙ x + 1 ∙ 4 ∙ y) – (1 ∙ 4 ∙ 1 + 2 ∙ 1 ∙ y + 1 ∙ 5 ∙ x) = 0
10 + 1x + 4y – 4 – 2y – 5x = 0
Operam-se os termos semelhantes e define-se a equação geral da reta:
– 4x + 2y – 6 = 0
 Lembrete
É possível determinar a equação geral da reta a partir de qualquer outro 
tipo de equação que também a defina.
3.2 Algoritmo DDA (Digital Differential Analyser)
Agora que recordamos os conceitos de geometria analítica sobre equações da reta, podemos estudar 
os algoritmos usados para rasterizar uma linha em uma janela de visualização gráfica.
Considere o SRU e seja (x0,y0) a coordenada do ponto inicialA (posição relativa do plano onde a 
reta se inicia) e (x1, y1) a coordenada do ponto final B (posição relativa do plano onde a reta termina), 
conforme a figura a seguir. 
y
y1
y0
x0 x1 x
A
B
Figura 23 
A equação reduzida da reta que passa por A e B, como visto anteriormente, é da forma: y = mx + b.
A princípio, aplicamos o mapeamento window-to-viewport para rasterizar os pontos A e B. Contudo, 
para fins didáticos, estabelecemos que os pontos inicial e final já estejam rasterizados (como é o caso 
da aplicação PaintBrush).
46
Unidade I
 Observação
Nos softwares aplicativos como o Excel e o CAD/CAM, a rasterização 
dos pontos inicial e final é necessária.
Seja qual a for a circunstância, a rasterização da linha será mais eficiente quanto mais próximo 
da reta teórica estiverem os pixels que serão mapeados. Portanto, será na matriz de pixel da janela de 
visualização que ocorrerá a rasterização de linhas.
O algoritmo DDA pode ser implementado em várias linguagens de programação, incluindo C, C++, 
Java, Python, entre outras. Ele é usado em muitos aplicativos de desenho e gráficos, como editores de 
imagens, jogos e software de modelagem 3D.
A ideia do DDA é utilizar a equação reduzida da reta e incrementar a cada passo, uma unidade, 
na variável x.
Outros algoritmos incrementais, como do ponto médio, que veremos na sequência, pode-se 
incrementar tanto na variável x como na variável y.
Observe como funciona o DDA para uma reta de equação y = mx + b que passa pelos pontos A(x0,y0) 
e B(x1,y1) para determinar uma fórmula geral de aplicação desse algoritmo.
y
yn
y0
x0 xn x
A α
B
Figura 24 
Determinamos o coeficiente angular m:
n = xn – x0 (define a quantidade de colunas de pixels entre A e B)
m = 
y
n
n 0− y
Conforme acentuado anteriormente, uma reta é uma função da forma f(x) = mx + b e que a cada x 
se associa um único y. Logo, é válida a implicação de que, se f(x) = y0, então y0 = m . x0 + b. 
47
COMPUTAÇÃO GRÁFICA
Lembremos que é preciso mapear os pixels pertencentes às colunas existentes entre x0 e xn. 
Dessa forma, incrementamos uma unidade a cada x existente, a partir de x1 até xn e calculamos os 
y correspondentes:
Logo:
x1 = x0 + 1
y1 = m . x1 + b = m(x0+1) + b = m . x0 + m + b = m . x0 + b + m 
y1 = y0 + m
Continuando (faça as contas):
x2 = x1 +1, então x2 = x0+ 2 
y2 = mx2 + b = m(x0 + 2) + b = mx0 + 2m + b
Logo:
y2 = y0 + 2m
Seguindo esse raciocínio, nota-se que:
x3 = x0 + 3
y3 = y0 + 3m
⋮
xn-1 = x0 + (n-1)
yj = y0 + (n-1) . m
O último ponto será o (xn, yn), onde:
xn = x0 + n
yn = y0 + n · m
As expressões anteriores representam uma fórmula geral para mapear a coordenada de cada pixel 
dentro da viewport.
48
Unidade I
Como esse algoritmo foi pensado para inclinações entre -45° e 45°, significa que |m| < 1. Para outros 
valores, devemos usar simetrias, tema que estudaremos mais adiante. 
A consequência imediata dessa restrição é que os valores calculados de y deverão ser arredondados 
ou truncados, visto que as coordenadas dos pixels só poderão assumir valores inteiros e positivos.
Exemplo:
Usando o DDA, compute quais pixels devem ser escolhidos para representar a reta que passa pelos 
pontos (6,9) e (11,12).
13
12
12
11
11
10
10
9
9876
Figura 25 
Com o objetivo de resolvermos esse exemplo, devemos usar as fórmulas dos termos gerais 
demonstradas anteriormente:
xn = x0 + n
yn = y0 + n · m
Para tanto, devemos conhecer os valores de x0, y0 e de m. Os valores de x0 e y0 correspondem à 
coordenada onde o segmento de reta se inicia, logo:
x0 = 6
y0 = 9
Já o valor de m, que corresponde à inclinação da reta, ou coeficiente angular, é dado pelo quociente 
da diferença entre as componentes final e inicial de y, yf – yi e a diferença entre as componentes final e 
inicial de x, xf – xi, assim:
m = 
y
x
 = 
�
�
�
�
y y
x x
f i
f i
49
COMPUTAÇÃO GRÁFICA
m �
�
�
�
12 9
11 6
0 6,
x1 = x0 + 1 = 6 + 1 = 7
y1 = y0 + m = 9 + 0,6 = 9,6 ⇒ (x1 ; y1) = (7; 9,6)
x2 = x0 + 2 = 6 + 2 = 8
y2 = y0 + 2m = 9 + 1,2 = 10,2 ⇒ (x2 ; y2) = (8; 10,2)
x3 = x0 + 3 = 6 + 3 = 9
y3 = y0 + 3m = 9 + 1,8 = 10,8 ⇒ (x3 ; y3) = (9; 10,8)
x4 = x0 + 4 = 6 + 4 = 10
x4 = y0 + 4m = 9 + 2,4 = 11,4 ⇒ (x4 ; y4) = (10; 11,4)
x5 = x0 + 5 = 6 + 5 = 11
y5 = y0 + 5m = 9 + 3 = 12 ⇒ (x5 ; y5) = (11; 12)
Como os pixels computados não podem assumir valores reais, e sim valores inteiros positivos, 
devemos arredondá-los. Assim:
(7; 9,6) ~ (7; 10)
(8; 10,2) ~ (8; 10)
(9; 10,8) ~ (9; 11)
(10; 11,4) ~ (10; 11)
Agora podemos observar como ficam os pixels acesos e computados em uma janela de visualização 
de algum dispositivo gráfico e compará-los à reta teórica dada:
50
Unidade I
13
12
12
11
11
10
10
9
9876
Figura 26
A seguir, um pseudocódigo em linguagem C para o cômputo dos pixels.
step=max of fabs(Y2 – Y1), fabs(X2 – X1);
Xinc = (X2 – X1)/step;
Yinc = (Y2 – Y1)/step;
step = Max of (fabs(11 – 6), fabs(12 – 9)) = 5
Xinc = (11 – 6)/5 = 1
Yinc = (12 – 9)/5 = 0,6
X = X + Xinc
Y = Y + Yinc
3.3 Algoritmo de Bresenham 
Outra família de algoritmos é formada pelo algoritmo de Bresenham ou algoritmo do ponto médio.
Como dito anteriormente, o algoritmo de Bresenham é incremental, a diferença é que nele é 
possível incrementar uma unidade tanto na coordenada x quanto na coordenada y. Assim, teremos 
para cada passo x = x + 1, e o valor de y será incrementado ou não, dependo das diferenças 
calculadas a cada ponto.
Outra diferença é que o desenvolvimento do algoritmo se dá estabelecendo as diferenças das 
distâncias entre os pixels mais próximos à reta teórica que será rasterizada, em vez de usar a equação 
da reta, como no DDA. Assim, o algoritmo do ponto médio acenderá somente pixels adjacentes, fazendo 
com que a reta, no dispositivo gráfico, seja a mais contínua possível.
51
COMPUTAÇÃO GRÁFICA
Diferentemente de outros algoritmos de rasterização de linhas retas, o algoritmo de Bresenham, 
durante sua aplicação, faz uso apenas de uma aritmética inteira dentro dos loops (passos), portanto 
não é necessário arredondar os valores obtidos. Tal fato acarreta maior eficiência no desempenho 
de processamento.
Uma semelhança com o DDA é que o algoritmo de Bresenham também foi desenvolvido para linhas 
com inclinação entre -45º e 45º.
Para entender melhor, observe a figura a seguir, que representa um dispositivo gráfico.
S
IP
yp+2
yp+1
yp
yp-1
xp-1 xp xp+1 xp+2
Q
M
Figura 27 
É possível observar que a reta teórica passa sobre o pixel de coordenadas (xp-1, yp-1) e tangenciando o 
pixel de coordenadas (xp, yp). Todavia, a reta teórica não encosta nos pixels I e S, que estão na coluna xp + 1. 
A pergunta que devemos fazer é: qual é o próximo pixel que deve ser aceso? 
Devemos então decidir se acendemos o pixel I, incrementando 1 à coordenada x, ou o pixel S, 
incrementando 1 a ambas as coordenadas.
Voltando à figura, podemos observar o ponto M, denotado como o ponto médio da distância entre I 
e S e o ponto Q, que representa a intersecção entre a coluna xp + 1 e a reta teórica.
Como o ponto Q está abaixo do ponto médio, acenderemos o pixel I por estar mais próximo da 
reta teórica. Caso contrário, se Q estivesse acima de M, o pixel S estaria mais próximo à reta teórica 
e o acenderíamos.
Concluindo, é a posição da reta teórica em relação ao ponto médio M que permitirá a escolha do 
próximo pixel a ser aceso. 
Entendido como funciona o algoritmo do ponto médio, agora vamos fazer a demonstração algébrica 
de seu desenvolvimento:
52
Unidade I
Deve-se determinar o coeficiente angular da reta:
∆x = x2 – x1 e ∆y = y2 – y1
m
y
x
�
�
�
A equação da reta é da forma y = mx + b, logo:
y
y = x + b
x
∆ 
 ∆ 
Rearranjando os termos:
y
x - y + b = 0
x
∆ 
 ∆ 
Multiplicando a expressão por ∆x:
x∆y - y∆x + b∆x = 0
Agora podemos definir implicitamente uma função:
f(x,y) = x y - y x + b x = 0 ∆ ∆ ∆
Chamando y∆= A, -∆x= B e b∆x = C, temos:
f(x,y) = Ax + By + C = 0
Não é difícil notar que:
• f(x,y) = 0

Outros materiais