Escolar Documentos
Profissional Documentos
Cultura Documentos
Departamento de Computao - DC
Universidade Federal de So Carlos - UFSCar
Via Washington Luiz, Km. 235
CP. 676 CEP: 13565-905 So Carlos - SP
fone: 016-260-8232 // fax: 016-260-8233
ndice
1- Conceitos de Computao Grfica ....................................................... 04
1.1 Conceitos de Aplicativos Grficos ................................................. 05
1.2 Conceitos de CAD ......................................................................... 06
1.3 Arquitetura dos Terminas Grficos ................................................ 06
2- Transformaes Afins ............................................................................... 11
2.1 Translao ....................................................................................... 11
2.2 Escalamento .................................................................................... 11
2.3 Rotao ........................................................................................... 12
2.4 Espelhamento ................................................................................. 13
2.5 Rotao em Torno de um Eixo Genrico ....................................... 14
2.4 Cisalhamento .................................................................................. 14
2.5 Composio de Transformaes .................................................... 15
3- Coordenadas Homogneas ....................................................................... 17
4- Projees Planares .................................................................................... 19
4.1 Classificao das Projees Planares ............................................. 19
4.2 Projees Planares Paralelas .......................................................... 20
4.3) Projees Planares Perspectivas ..................................................... 22
5. lgebra das Projees Planares Paralelas ................................................. 26
5.1 lgebra das Projees Planares Ortogrficas ................................ 26
5.2 lgebra das Projees Planares Ortogrficas Axonomtricas ....... 26
5.3 lgebra das Projees Planares Oblquas ...................................... 30
6. lgebra das Projees Planares Perspectivas ........................................... 34
7. Uso de Projees em Sistema CAD .......................................................... 38
8. Transformaes e Mapeamento e Coordenadas em Bibliotecas Grficas 42
8.1 Esquema de Transformaes na Biblioteca Grfica OpenGL ........ 42
8.1.1. Transformaes de Visualizao e Modelagem ............................. 44
8.1.2. Transformao de Projeo ............................................................ 45
8.1.3. Transformao de Viewport ........................................................... 46
8.1.4. Matrizes de Transformao ........................................................... 46
8.2 Esquema de Transformaes na Biblioteca Grfica VRML .......... 48
9. Referncias .......................................................................................................... 51
D. F. Rogers et all - Mathematical Elements for Computer Graphics. McGraw Hill - 1976
Jon Q.Jacobs- Delphi Developers Guide to OpenGL. Wordware Publishing, Inc. 1998
Mason Woo, Jackie Neider, Tom Davis & Dave Shreiner (OpenGL Architecture Review Board) -
OpenGL Programming Guide, Third Edition The Official Guide to Learning OpenGL, Version 1.2.
Addison Wesley,1999
Esquema de Avaliao
Nfinal = NPV*0,5 + NPJ*0,5
NPV = Valor da Prova_1 ou, caso feita, o valor da Prova Substitutva
NPJ = Nota do Projeto
1) Conceitos de Computao Grfica
A computao grfica pode ser entendida como o conjunto de algoritmos, tcnicas e metodologias
para o tratamento e a representao grfica de informaes atravs da criao, armazenamento e
manipulao de desenhos, utilizando-se computadores e perifricos grficos. Em termos de aplicao,
ela pode ser dividida atualmente nas seguintes reas:
CAD
Apresentaes Grficas
Arte . por Computador
Entretenimento
Educao e Treinamento
Visualizao Cientfica
Atualmente a potencialidade da computao grfica est bastante relacionada com a evoluo dos
computadores, em termos de hardware e software. Por exemplo, hoje microcomputadores tem
performance compatvel com alguns tipos de estaes de trabalho e no mercado se encontram uma
grande variedade de dispositivos grficos de alta perfomance, tais como, traadores grficos, mesas
digitalizadoras, scanners, mouses, trackballs e impressoras de alta qualidade. Estes fatores tem
permitido que os aplicativos grficos aumentem acentuadamente a sua versatilidade, capacidade e
performance.
Outro fator a se destacar a grande interao da computao grfica com outras reas da cincia (fig.
1.1), caracterizada por uma via de dois sentidos, onde tanto a computao grfica recebe subsdios
como fornece.
Fsica
Outras ...
Matemtica
Computao Medicina
Grfica
Psicologia
Eng.
Eletrnica Artes
A fsica, por exemplo, forneceu computao grfica todos os conceitos da tica, o que permitiu a
elaborao de modelos de cores e de iluminao e preenchimento de areas. A computao grfica por
sua vez forneceu fsica as ferramentas de visualizao cientfica que permitem codificar em
informao grfica os dados de seus experimentos.
A matemtica est presente de forma acentuada em praticamente todas as reas do conhecimento, no
entanto, somente para dar um exemplo mais especfico, no caso da computao grfica pode se citar os
conceitos de algebra linear e de trigonometria utilizados extensivamente. A retribuio da computao
grfica est nas ferramentas de visualizao do comportamento de funes matemticas, por exemplo.
Conforme mais detalhado no item 1.5, a medicina deu a computao grfica vrios conceitos
importantes relacionados a forma como o olho capta uma imagem. A computao grfica fornece
medicina ferramentas de visualizao de partes ou de todo o corpo humano.
A psicologia forneceu computao grfica importantes conceitos relacionados a forma de
interpretao de uma informao grfica, os quais sero estudados no captulo sobre visualizao
cientfica. A computao grfica deu a psicologia mecanismos para ela explorar mais eficientemente a
comunicao visual objetivando, por exemplo, a implementao de ferramentas educacionais.
A engenharia eletrnica deu a computao grfica a tecnologia para a produo dos dispositivos
grficos. Atravs da computao grfica, a engenharia eletrnica ganhou ferramentas de auxlio para o
desenvolvimento de placas de circuito impresso e de pastilhas de circuito integrado.
Data Application
Base Program
Metafile
Device - Independent Metafile
Graphics Package Reader
Device Virtual
Device Metafile Device
Driver Driver Writer Interface
Virtual
Device
Metafile
Current
Current Future VDI Plotter
Terminal Terminal
CPU
.
.
. Controlador
MOVE de Exibio
10
15
LINE
400
300 Refresh
. Buffer
. Terminal
. Teclado de Vdeo
Mouse
Figura 1.3 - Terminal vetorial
0 0 0 0 0 0 0 0
CPU
0 0 0 1 1 0 0 0
0 0 1 0 0 1 0 0 Controlador
0 1 0 0 0 0 1 0 de Exibio
Teclado
0 1 0 1 1 0 1 0 Mouse
0 1 0 1 1 0 1 0
Controlador
de Vdeo
Terminal
Figura 1.4 - Terminal por varredura (Raster).
A arquitetura mais comum para um terminal grfico exibida na figura 1.5, onde o frame buffer
armazenado na memria local do sistema. Como neste caso a transmisso do contedo do frame buffer
para o controlador de vdeo feita atravs do barramento central, tanto a CPU como o barramento
ficam ocupados com uma operao menos nobre em termos computacionais.
A arquitetura mais comum dos terminais por varredura exibida na figura 1.6. Neste caso, uma poro
da memria do sistema serve como frame buffer e o controlador de vdeo exibe a imagem armazenada
acessando esta poro da memria atravs de uma porta separada. A razo de acesso definida pela
taxa de varredura. Em muitos sistemas, uma poro fixa da memria alocada permanentemente para
o frame buffer, no entanto, outros sistemas tem vrias reas de memria intercambiveis. Em
microcomputadores estas pores de memrias so chamadas de pginas e, em geral, duas delas so
usadas como frame buffer, o que permite se implementar um esquema de double buffer, que consiste
em manter uma pgina ativa, ou seja, em exibio, e a outra desativada. A escrita de uma nova
imagem feita na pgina desativada e, ao final da escrita, ela se torna a pgina ativa. Isto permite
tornar mais suave o processo de animao de um conjunto de imagens, dado que o observador no
visualiza a escrita de cada imagem.
Dispositivos
CPU Perifricos
BUS
Memria Controlador
de Vdeo
Monitor
do Sistema
Dispositivos
CPU Perifricos
BUS
Algumas operaes realizadas pela CPU e relacionadas com a manipulao dos pixels so custosas em
termos de tempo para serem realizadas somente pela CPU. Por exemplo, a operao de scan
conversion (determinao de endereo em memria de um determinado pixel) ou as operaes raster
(cpia, movimentao ou combinao de reas retangulares de pixels) consomem tempo, apesar da
simplicidade do procedimento. Desta forma, possvel se adicionar um processador grfico
arquitetura, de maneira que estas tarefas possam ser realizadas por este processador, aliviando a carga
sobre a CPU. Estes processadores tambm podem realizar outras tarefas como, por exemplo, gerar
primitivas grficas (linhas, arcos, etc) ou operaes mais sofisticadas (linhas com anti-aliasing,
rendering, etc). A figura 1.7 mostra como fica a arquitetura da figura 1.6 acrescida de um processador
grfico.
Certamente o valor 0 ou 1 para um pixel no suficiente para se produzir uma imagem de qualidade.
Assim, a pergunta : quantos bits por pixeis so necessrios para se gerar uma imagem com qualidade
satisfatria, bem como garantir uma transio suave de cores ou tons de cinza? A resposta que 5 ou 6
bits pode ser suficiente, mas muitas vezes se necessita 8 ou mais bits. No caso de terminais coloridos o
usual 8 bits por cor primria: vermelho, verde e azul, cuja sigla em ingls RGB.
Mesmo atualmente com a queda do preo das memrias RAM, custoso se montar uma memria de
vdeo com 24 bits por pixel, alm disto, incomum se utilizar 224 diferentes cores em uma imagem.
Por outro lado, muitas vezes interessante se observar uma imagem onde a associao de cores com
os pixels possa ser mudada. Desta forma, muitos terminais utilizam o esquema da tabela de consulta
de cores, tambm conhecida como LUT (look-up table). Por este processo, cada pixel tem um valor de
8 bits associado, o que constitui um ndice para uma tabela de cores de 256 posies (figura 1.8).
Nesta posio est armazenado o valor da cor que decomposta em fraes de suas componentes
bsicas, ou seja, as cores primrias RGB, caracterizaro o pixel na tela. Note-se que no caso da figura
1.8 possvel se trabalhar com 212 cores diferentes, no entanto, somente 256 diferentes cores podero
ser exibidas simultaneamente.
Dispositivos
CPU Perifricos Arquitetura
com Proces.
Grfico
BUS
Processador Memria
Grfico
do Sistema
A definio de caractersticas dos terminais grficos deve ser baseada nas propriedades do olho
humano, dado que ele o dispositivo que ir transmitir uma imagem para o crebro, onde ser
interpretada.
Um esquema simplificado do olho humano exibido na figura 1.9. Note-se neste esquema a retina,
que uma membrana que reveste a parte interna do olho o local de formao da imagem. Ela
formada basicamente por 2 classes de receptores de imagens:
1) cones - 6 a 7 milhes - muito sensveis a nveis altos de luminosidade e a cores
2) bastonetes - 75 a 150 milhes - sensveis a baixos nveis de luminosidade
A fvea a parte central da retina. Ela formada principalmente de cones e responsvel pela
distino de detalhes finos de uma imagem. Note-se que o olho humano distingue melhor cores em
ambientes bem iluminados que so adequados a ao dos cones. Ao contrrio, em ambientes de pouca
luz, onde os bastonetes atuam, o nvel de distino de cores menor.
Em termos da resoluo de uma imagem, os olhos tambm ditam os parmetros adequados. Por
exemplo, a resoluo de uma imagem de TV da ordem de 512 x 384 pixels, em largura x altura, que
um valor relativamente baixo e origina imagens de qualidade mdia. A resoluo dos terminais
grficos modernos de 1280 x 1024, o que permite a exibio de imagens com boa qualidade e, por
isto, ser adotada como a resoluo das TVs digitais. Resolues maiores do que esta esbarram no
limite da capacidade do olho humano em distinguir detalhes, ou seja, o efeito visual de resolues
muito maiores do que 1280 x 1024 podem ser imperceptveis para o olho humano.
As caractersticas dos olhos tambm influenciam em termos de nveis de cores. Por exemplo, na
exibio de uma faixa de dgrad de tons de cinza variando do branco at o preto, quantos tons so
necessrios para que se observe a faixa com uma transio suave de tons, ou seja, sem a distino das
linhas de mudana de tons? A resposta um valor de no mnimo 100 tons. Em funo de dados deste
tipo, bem como do nmero mnimo de cores necessrias para se compor uma imagem de boa
qualidade, os terminais modernos permitem a exibio simultnea de 128 ou 256 cores.
Organizao da Look-Up
Table de um Terminal
Ymax
Frame
Monitor
Buffer
Pixel -> 67
(x,y)
0 Pixel exibido
0 Xmax em (x,y)
01000011
Red Green Blue
255
1001 1010 0001
67 100110100001
0
Look-up Table
Figura 1.8: Operao da Tabela de Cores (LUT).
Quando somente a operao de escalamento realizada, a matriz A na equao 2.1 fica a matriz E, onde ex, ey,
ez, so os fatores de escala das coordenadas x, y e z, respectivamente. Observa-se facilmente que a aplicao desta
r
matriz sobre o vetor de coordenadas gera o vetor escalado v , conforme descrito pelas equaes 2.2 e 2.3, a
seguir.
e x 0 0 ex x
E= 0 ey 0 (eq.2.2)
r
v = ey y (eq.2.3)
0 0 ez ez z
2.3 Rotao
A rotao o giro de um determinado ngulo de um ponto em torno de um ponto de referncia, sem
alterao da distncia entre eles. Esta operao aplicada normalmente sobre todos os pontos de uma figura,
o que possibilita que ela seja rotacionada. Vrios programas grficos dispem desta operao, sendo que
alguns restringem o ngulo de rotao a valores fixos, tais como, 90 e 180.
Para o clculo da matriz de rotao, ser considerado inicialmente apenas duas coordenadas, por exemplo, x
e y. Assim, na figura 2.3a, o ponto P, de coordenadas (x,y), ser rotacionado de um ngulo em torno do
eixo z, at a posio do ponto P (x,y). A linha que une o ponto P a origem do sistema de coordenadas est
rotacionada de um ngulo em relao ao eixo x.
Fig. 2.4: Rotao em torno do eixo z Fig. 2.5: Rotao em torno do eixo y
2.4 Espelhamento
Uma operao bastante conhecida em computao grfica o espelhamento, a qual consiste em rotacionar
um objeto em torno de um eixo de tal maneira que os pontos do objeto na posio original e na rotacionada
mantenham a mesma distncia em relao a um linha de referncia, caso bidimensional, ou a um plano de
referncia, caso tridimensional. Na figura 2.7, h o espelhamento de um objeto em torno do eixo y em
relao ao plano xy e em torno do eixo z em relao ao plano xz. Em ambos os casos, o ngulo de rotao
180.
A matriz de rotao em torno de um eixo genrico (fig. 2.8) no complexa, porm trabalhosa em termos de
deduo, assim, ser apresentado apenas a matriz MGR que permite esta operao. Sendo N um vetor
unitrio de coordenadas (x,y,z) e o ngulo de rotao, tem-se:
tx 2 + c txy sz txz + sy
MGR = txy + sz ty 2 + c tyz sx (eq. 2.18)
txz sy tyz + sx tz 2 + c
Onde:
x,y,z = coordenadas de N t = 1- cos()
s = sin() c = cos()
y, y*
j
n
N
Q
i
S
k
P*
P
O x, x*
z, z*
2.6 Cisalhamento
Outra transformao afim importante de ser estudada o cisalhamento (shear), cujo exemplo clssico para o
sistema de coordenadas bidimensional que explica a sua funo o da italizao de um caracter (fig. 2.9).
Neste caso, h uma variao no valor da coordenada x em funo do valor da y (fig. 2.9 i_1 e i_2), sendo
MTS_1 a matriz de transformao correspondente (eq.2.19). Pode-se associar uma outra transformao a de
cisalhamento, como, por exemplo, o escalamento da coordenada y (fig. 2.9 i_3), conforme exemplificado em
MTS_2, (eq.2.20). A matriz MTS_3 (eq.2.21) ilustra o uso desta transformao para o caso tridimensional.
y
y
x
z z
y y y
x x x
z z z
Figura 2.11.a Figura 2.11.b Figura 2.11.c
Figura 2.11: Composio de transformaes.
y y
y y y
x x
x z x z x
z z z
Figura 2.12: Mudana de centro de rotao.
Neste sentido, caso se deseje rotacionar um objeto no espao em torno de um ponto interno a ele, deve se
primeiramente deslocar o centro de rotao (origem dos eixos) para este ponto, proceder a rotao e
posteriormente voltar o centro de rotao a sua posio inicial (fig. 2.12). Note-se que isto equivale a
deslocar o objeto para o centro de coordenadas.
3. Coordenadas Homogneas
Como detalhado no captulo 2, uma transformao afim segue a forma:
r r r
v = M v + b (eq. 3.1)
Esta formulao , em termos de clculo, bastante inconveniente para se determinar as coordenadas do vetor
final, aps uma srie de transformaes de um vetor inicial. A formulao da equao 3.4 muito mais
conveniente porque permite que o clculo de mltiplas transformaes seja realizado calculando-se a matriz
de transformao resultante e aplicando-se esta matriz sobre o vetor (eq. 3.5).
r r r
v1 = M1 v + b1 (eq. 3.2)
r v r r
v2 = M2 M1 v + M 2 b1 + b2 (eq. 3.3)
r r
v = M v (eq. 3.4)
r ... r
v = Mn M n1 M1 v (eq. 3.5)
A impossibilidade de se inserir a transformao de translao na matriz M no permite que a formulao 3.5
seja usada, assim, necessrio se encontrar um mecanismo que contorne este problema. A soluo usual para
este problema a alterao do espao de coordenadas de dimenso 3 para 4, de forma controlada, de maneira
que a dimenso da matriz M se altere de 3x3 para 3x4 e, assim, ela possa incorporar a transformao de
translao (eq. 3.6). Como inconveniente operar uma matriz no quadrada por no permitir, por exemplo, o
clculo da inversa, a matriz MT pode ser novamente modificada pela insero de mais uma linha que no
altere o resultado final (eq. 3.7).
(eq. 3.6) (eq. 3.7)
x x x+l 1 0 0 l
y 1 0 0 l y y + m 0 1 0 m
= 0 1 0 m = MT =
z z z+n 0 0 1 n
0 0 1 n
1 1 1 0 0 0 1
r
Considerando-se uma matriz M genrica de dimenso 4x4, quando ela aplicada sobre o vetor v , em
r
coordenadas homogneas, gera o vetor v * descrito
r a seguir: Para se calcular o vetor desejado, normaliza-se o
r
vetor v * . Assim, supondo-se H 0 , tem-se v .
x X X / H
y Y Y / H
v r
v* = M = v =
z Z Z / H
1 H
1
Neste contexto, uma propriedade interessante e bastante til das coordenadas homogneas se refere a
r
representao de um ponto no infinito. Assim, considere-se o ponto sobre o eixo x indicado pelo vetor v * e
v
v:
A A / H
0 0
r r
v* = v =
0 0
H 1
Quando H 0 , A / H , logo a aplicao de uma matriz de transformao em coordenadas
r
homogneas resulta em um ponto no infinito quando o seu vetor posicional for do tipo v * descrito a seguir.
r r r
Em geral, utiliza-se os vetores infinitos x * , y * e z * .
A 1 0 0
B 0 1 0
r r* r r*
v* = x = y * = z =
C 0 0 1
0 0 0 0
Estes vetores infinitos sero, em especial, usados na determinao de pontos-de-fuga no caso de projees
planares perspectivas. Outras propriedades das coordenadas homogneas sero exploradas posteriormente.
Tambm posteriormente ser mostrado que a matriz de transformao M de dimenso 4x4, pode ser
particionada em 4 quatro partes:
3x3 3x1
M =
1x3 1x1
1x3: produz projeo perspectiva 1x1: produz escalamento global
3x3: produz uma transformao afim 3x1: produz translao
do tipo, rotao e escalamento
4. Projees Planares
Dado que a exibio de um objeto 3D em uma tela de computador ou em uma folha de papel exige o
mapeamento de um sistema de coordenadas 3D em um 2D, operaes de projeo so requeridas. Em geral,
entende-se como projeo, o processo de mapear um sistema de coordenadas de dimenso n em um de
dimenso menor ou igual a n-1.
A humanidade utiliza h sculos o conceito de projees geomtricas. O mais antigo exemplo de uso de
desenho tcnico na histria da humanidade data de aproximadamente 2150 A.C. O desenho contm uma
planta de um prdio da cidade de Lagash na Mesopotmia.
De acordo com aluses literrias, os gemetras e pintores gregos da antiguidade clssica estavam
familiarizados com as leis da perspectiva. O pintor Agatharchus foi o primeiro a usar perspectivas em larga
escala no perodo de 5 sculos A.C. e escreveu um livro sobre pintura de cenas, o que inspirou os filsofos
Anaxagoras e Demcrito a escrever sobre perspectiva.
A primeira evidncia real do uso de desenhos para guiar edificaes foi encontrado nos textos de Vitruvius,
um arquiteto e engenheiro romano do perodo de Jlio Csar e Augustus, em torno do ano 14 A.C.
Apesar do estudo de gregos e romanos, uma formalizao destas tcnicas s surgiu durante a Renascena. Os
pintores Duccio (1255-1319), pintor do famoso quadro A ltima Ceia, e Giotto (1276-1336)
empreenderam esforos no sentido de representar a terceira dimenso atravs da perspectiva. Filippo
Brunelleschi (1377-1446) foi o primeiro artista a desenvolver um sistema matemtico para a perspectiva. O
primeiro tratado sobre perspectiva, Della Pittura, foi publicado em 1435 por Leone Battista Alberti (1404-
1472). No mesmo perodo, a tcnica da perspectiva continuou a ser aperfeioada por Piero della Francesca
(1420-1492) atravs do texto De Prospettiva Pingendi e por Leonardo da Vinci que pintou a sua verso de
A ltima Ceia.
Gasparad Monge (1746-1818), um desenhista de fortificaes militares francesas, foi o primeiro a descrever
de forma organizada o uso de projees em engenharia, o que lhe valeu o ttulo de pai da geometria
descritiva. Monge publicou a primeira edio do livro Geometrie Descriptive em 1801.
Desta poca para a atual, as tcnicas de projees continuaram a ser estudadas e aperfeioadas e se
popularizaram entre profissionais e estudantes de engenharia, artes e arquitetura. Com o surgimento da
computao grfica e com a popularizao de sistemas e bibliotecas grficas, o nmero de interessados nas
tcnicas de projees se ampliou acentuadamente.
Geralmente usurios de sistemas ou bibliotecas grficas se deparam com operaes relacionadas a
posicionamento e especificao de cmeras ou ento a ajuste de transformaes que permitam o correto
posicionamento de um objeto em uma cena. To comum quanto estas operaes a dificuldade do usurio
em realiz-las de forma totalmente segura e compreensvel. Outro problema nesta mesma linha que o usurio
se depara quando ele transporta os objetos criados em um determinado sistema grfico para outro.
Comumentemente falta-lhe um conhecimento mais conceitual do modo de funcionamento destas operaes.
O objetivo deste curso conceituar projees planares, apresentando a sua classificao e formas algbricas
de manipul-las. Com base nestes conceitos, ser ilustrado o funcionamento do esquema de transformaes
em bibliotecas e sistemas grficos que manipulam primitivas tridimensionais.
As projees mais consideradas em CG so as que projetam um sistema de coordenadas 3D em um 2D,
realizam a projeo em um plano ao invs de uma superfcie curva, como tambm utilizam raios projetores
lineares ao invs de curvos (fig. 4.1). Esta classe de projees conhecida como projees geomtricas
planares e podem ser subclassificadas de acordo com o esquema da figura 4.2
4.1 Classificao das Projees Planares
As projees planares paralelas e perspectivas diferem com relao a distncia do plano de projeo ao
centro de projeo. Se a distncia finita, a projeo perspectiva, se a distncia infinita, a projeo
paralela (fig. 4.3).
Proj. Proj. Proj.
Planar Cilindrica Cnica
Proj. Planares
Paralelas Perspectivas
Ortogrficas Oblquas Um-Ponto
A
A A
B A
B
C. de Projeo B
no Finito
B
Raios Projetores
r
r
r
r
r r
N N
Planta
Vista
Lateral
Vista
Frontal
Dimtrica Isomtrica
x
y z y
x x
Cavalier
Cabinet
Cavalier
Cabinet
B z
z
l_A
p A
RP
l_B
pf pXY pf pXY
l_B RP1
RP2
l_A
CP CP
A
B
CP
C,D
A,B
E,F
G,H
PF_1 PF_2
y
CP
E A
G B
F
y
H x
y y
x x
z
Figura 4.14: Projeo perspectiva com um ponto-de-fuga.
PF-1 PF-2
Figura 4.15: Projeo perspectiva com dois pontos-de-fuga.
PF-1
PF-2
PF-3
Figura 4.16: Projeo perspectiva com trs pontos-de-fuga.
5. lgebra das Projees Planares Paralelas
Para que as projees possam ser geradas em computador necessrio se definir matrizes de transformaes
que, aplicadas ao conjunto de pontos de um objeto tridimensional, permita a obteno da figura projetada do
objeto. Assim, a seguir, para cada tipo de projeo sero determinadas as matrizes de transformao. Este
captulo cobre a lgebra das projees planares paralelas.
5.1 lgebra das Projees Planares Paralelas Ortogrficas
As projees planares ortogrficas vista lateral, frontal e planta so obtidas atravs de transformaes
ortogonais, de acordo com as regras abaixo, e projeo no plano xy atravs de raios projetores
perpendiculares a este plano (fig. 4.5)
vista lateral- rotao de -90 no eixo x, eliminao da coordenada z
vista frontal- rotao de -90 no eixo z, rotao de 90 no eixo x, e eliminao da coordenada z
vista superior (planta)- rotao de -90 no eixo z, eliminao da coordenada z, e translao no eixo y
no maior valor na coordenada x.
A seguir detalhado apenas a gerao da vista lateral. Assim, partindo-se da equao de rotao em torno do
eixo x, determina-se a matriz de projeo da vista lateral MPvl (eq. 5.2).
1 0 0 0
0 cos( ) sen( ) 0
RX = (eq. 5.1)
0 sen( ) cos( ) 0
0 0 0 1
Sendo = -90 e considerando-se a projeo no eixo xy, a matriz fica:
1 0 0 0
0 0 1 0
MP = (eq. 5.2)
VL
0 0 0 0
0 0 0 1
Note-se que o versor sobre o eixo z, (0,0,1), ser projetado em (0,1), como exemplificado nas figuras 5.1a e
5.1b. Observe a ordem correta dos eixos.
5.2 lgebra das Projees Planares Paralelas Ortogrficas Axonomtricas
As projees vista lateral, frontal e planta permitem uma observao parcial do objeto projetado, em
especial, caso se observe apenas uma delas, no possvel se conceber corretamente a forma do objeto. De
forma a solucionar este problema, usual a folha de projeto de um objeto conter as projees vista lateral,
frontal e planta, mais uma projeo axonomtrica, a qual permite que se tenha uma viso mais integrada do
objeto.
Como citado no captulo 4, as projees paralelas ortogrficas axonomtricas tem a direo de projeo e a
normal ao plano de projeo no coincidentes com a direo de um dos eixos principais (fig. 4.6). Isto
equivalente a se rotacionar adequadamente o objeto e considerar a direo de projeo e a normal ao plano
de projeo coincidentes com a direo de um dos eixos principais.
Nas projees axonomtricas h uma alterao da dimenso das faces do objeto quando projetadas sobre o
plano. O tipo de rotao do objeto e as consideraes sobre a alterao das dimenses permitem que se
determine as matrizes de projeo. Neste sentido, o clculo destas matrizes vai partir de uma rotao do
objeto em torno do eixo y e posteriormente do eixo x (eq. 5.3).
1 0 0 0 cos( ) 0 sen( ) 0
0 cos( ) sen( ) 0 0 1 0 0
RX RY = (eq. 5.3)
0 sen( ) cos( ) 0 sen( ) 0 cos( ) 0
0 0 0 1 0 0 0 1
cos( ) 0 sen( ) 0
sen( ) sen( ) cos( ) cos( ) sen( ) 0
RX RY = (eq. 5.4)
sen( ) cos( ) sen( ) cos( ) cos( ) 0
0 0 0 1
Aplicando-se esta matriz sobre os vetores unitrios (1,0,0), (0,1,0) e (0,0,1), versores nos eixos x, y, e z
respectivamente, tem-se:
xX 1 cos( )
y 0 sen( ) sen( )
r
=
X
uX = R X RY = (eq. 5.5)
z X 0 sen( ) cos( )
1 1 1
x Y 0 0
y 1 cos( )
r
= = R X RY =
Y
u Y (eq. 5.6)
z Y 0 sen( )
1 1 1
xZ 0 sen( )
y 0 cos( ) sen( )
r
= = R X RY =
Z
u Z (eq. 5.7)
zZ 1 cos( ) cos( )
1 1 1
Considerando-se apenas as componentes x e y dos versores rotacionados, tem-se as projees destes vetores
sobre os plano xy. De forma a se estipular condies para o encolhimento da dimenso destes vetores, so
calculados os seus mdulos, como ilustrado a seguir. Assim, para o caso da projeo do versor sobre o eixo x
tem-se:
r
u x XY = ( x x )2 ( )
+ y x
2
(eq. 5.8)
r
u x XY = cos2 ( ) + (sen2 ( ) sen 2 ( )) (eq. 5.9)
Similarmente, para os versores sobre os eixos y e z tem-se:
r
u y XY = cos( ) (eq.5.10)
r
u z XY = (sen 2 ( ) + cos2 ( ) sen 2 ( ) (eq. 5.11)
Considerando-se que no momento da projeo de um objeto 3D sobre o plano xy, ocorra um encolhimento
por igual das coordenadas x e y dos pontos deste objetos, tem-se:
r r
u x XY = u y XY (eq. 5.12)
Assim, alm da equao 5.13, para a determinao dos ngulos tem-se a seguinte equao:
sen 2 ( ) + cos2 ( ) sen 2 ( ) = cos2 ( ) (eq. 5.25)
Similarmente a equao 5.16, derivada da 5.12, podemos derivar da 5.25 a equao:
sen 2 ( ) = (1 2 sen 2 ( )) / (1 sen 2 ( )) (eq. 5.26)
sen 2 ( ) = 1 2 sen 2 ( ) sen 2 ( ) = 1 / 3
sen( ) = 1 / 3 sen( ) = 1 / 2 (eq. 5.27)
1 1 1 1 0 0 0 0
0 1 1/ 2 0 0 1 1/ 2 0
r
PI = M I 0 0 1 1 0 0 1 1 (eq. 5.32)
1 1 1 1 1 1 1 1
A B C D E F G H
Uma considerao importante sobre projees isomtricas se refere ao fato que:
sen 2 ( ) = 1 / 3 = 35.26o ou = 144.74 o
sen 2 ( ) = 1 / 2 = 45.00o ou = 135.00o
Logo, a projeo isomtrica pode ser estruturada de outras formas. Na figura 5.2 esboada a estrutura
trabalhada anteriormente (5.2a) e outra bastante utilizada (5.2b).
Note-se que o objeto projetado (fig. 5.6) fica com a face anterior elevada em relao ao eixo x devido ao
ngulo =45 de projeo. Uma outra soluo considerar o ngulo =(180+45) (fig. 5.7). Assim, a nova
matriz de projeo fica:
1 0 2 / 2 0
1 2 / 2 0
=
0
MO 0
(eq. 5.33)
0 0 0
0 0 0 1
Aplicando-se esta nova matriz MO sobre os pontos do objeto definido na equao 5.30, tem-se os pontos
projetados descritos na equao 5.34 e esboados na figura 5.8.
1 1 ( 2 2) / 2 ( 2 2) / 2 0 0 2 /2 2 / 2
0 1 (1 2 ) / 2 2 /2 0 1 (1 2 ) / 2 2 / 2
r
PO = 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
A H
B C D E F G
(eq. 5.34)
G C
F
B
H
D
E A
Figura 5.6: Objeto e sua projeo oblqua cavalier com =45.
P2
P1
180
P1
P2
F B
E A
G C
H D
Figura 5.8: Objeto e sua projeo oblqua cavalier com =(180+45).
6. lgebra das Projees Planares Perspectivas
Para uma deduo simples e intuitiva da lgebra das projees perspectivas interessante se analisar a figura
6.1. Neste caso, o ponto P (x,y,z) projetado no ponto P (x,y,0), contido no plano xy, a partir de um centro
de projeo localizado no ponto C (0,0,k). Aplicando-se semelhana de tringulos a figura produzida e
considerando que a coordenada z tem valor negativo obtm-se:
x / k = x / ( z + k ) x = x / (( z / k ) + 1) (eq. 6.1)
y / k = y / ( z + k ) y = y / (( z / k ) + 1) (eq. 6.2)
Note-se que estes valores so os mesmos produzidos pela matriz de transformao abaixo.
X 1 0 0 0 x x
Y 0 1 0 0 y y
= = (eq. 6.3)
Z 0 0 1 0 z z
H 0 0 1 / k 1 1 ( z / k ) + 1
x X / H x / (( z / k ) + 1)
y Y / H y / (( z / k ) + 1)
= = (eq. 6.4)
z Z / H z / (( z / k ) + 1)
1 1 1
Y
y
P
y'
z x
x'
k X
Z CP
Figura 6.1: Projeo de um ponto no plano a partir de um centro de projeo.
Quando se adota o plano xy como o plano de projeo, desconsidera-se o valor de z na equao 6.4. Note-se
que nesta equao se k , ento x x e y y , o que origina uma projeo paralela, com raios
projetores perpendiculares ao plano xy, considerado como o plano de projeo.
Considerando-se x = at, y = bt e z = -ct, com a, b, e c maiores do que zero, tem-se:
x at / ((ct / k ) + 1)
y bt / (( ct / k ) + 1)
=
z ct / ((ct / k ) + 1)
1 1
x ka / c
y kb / c
Se t tem-se =
z k
1 1
Logo, o ponto (ka/c, kb/c, -k) constitui um ponto-de-fuga, dado que ele um ponto finito para o qual
converge a projeo de uma linha infinita. Dependendo do valor de a, b e c, dado k fixo, infinitos pontos-de-
fuga podem ser determinados.
Em termos de classificao da projeo perspectiva interessa apenas os pontos-de-fuga associados s linhas
paralelas aos eixos cartesianos. Assim, considere-se:
at a a
b bt b
r r r
v1 = , v2 = , v3 =
c c ct
1 1 1
r r r
v1 , v2 e v3 definem, respectivamente, uma linha paralela ao eixo x, y e z. A projeo desses vetores no
plano xy, dada por:
(eq. 6.5) (eq. 6.6) (eq. 6.7)
at / (( c / k ) + 1) a / (( c / k ) + 1) a / (( ct / k ) + 1)
b / (( c / k ) + 1) bt / (( c / k ) + 1) b / (( ct / k ) + 1)
r , vr = , vr =
v1 =
c / (( c / k ) + 1) 2 c / (( c / k ) + 1) 3 ct / (( ct / k ) + 1)
1 1 1
E quando t resulta em:
A2 0
B 0
r r r
v1 = v2 = v3 =
1
C1 C2 k
1 1 1
r r
Mesmo sendo B1, C1, A2 e C2 constantes finitas, v1 e v2 , que so respectivamente a transformao
r r
perspectiva de v1 e v2 , resultam em pontos que no espao tendem a infinito, ou seja, no h pontos-de-fuga
r r
associados as linhas paralelas aos eixos x e y. Este resultado esperado, pois v1 e v2 definem linhas
r
perpendiculares ao eixo z que contm o centro-de-projeo. A transformao perspectiva de v3 resulta em
r
um ponto finito no espao, ou seja, h ponto-de-fuga pois v3 perpendicular ao eixo z que contm o centro
de projeo.
A
PI
y
A*
A
B*
B
PF
-k
x
k
z
Derivando-se a figura 6.2 da 6.1, pode-se visualizar facilmente o surgimento do ponto-de-fuga. Os pontos A
e B so as projees no plano xy dos pontos AB da linha A-B perpendicular ao plano de projeo. Note-se
que considerando a coordenada z, os pontos A* e B* mostram como a transformao perspectiva fora a
r
convergncia dos pontos transformados para o ponto-de-fuga. Para t=0, v3 resulta no ponto PI (a, b, 0), que
o ponto que a linha AB estendida intercepta o plano. Os pontos A* e B* esto na linha PI-PF e, assim,
quando B, B*PF e B(0,0), o que faz com que todos os pontos projetados no plano estejam na linha
limitada pelos pontos (a,b) e (0,0).
Em especial, observando a figura 6.2 e as equaes 6.5, 6.6 e 6.7 compreende-se o mecanismo de
funcionamento da transformao perspectiva. O surgimento do ponto-de-fuga no eixo z se deve ao fato de que
na equao 6.7 o denominador tende a infinito quando t e, assim, as constantes divididas por um valor
infinito resultam em zero e o valor infinito do numerador dividido pelo valor infinito do denominador resulta
em um valor finito.
Em termos de computao grfica, o foco de interesse a projeo de um ponto no espao sobre o plano da
tela. Neste sentido, para ilustrar uma forma mais intuitiva de se obter as equaes anteriores, ser deduzido a
matriz de projeo perspectiva a partir da considerao de que a tela do computador est sobre o plano xy e
que o centro de projeo (observador) est fora deste plano e em alguma parte positiva do eixo z (fig. 6.3).
Supondo-se conhecido P1 e CP (fig. 6.3), pode-se escrever a equao de reta que passa por estes dois pontos.
No caso bidimensional, a equao da reta em funo dos pontos pA (xa,ya) e pB (xb,yb) fica:
x = xa + ( xb xa )u
y = ya + ( yb ya )u
Assim, no caso da figura 6.5 tem-se:
x = xc + ( x1 xc )u (eq. 6.5)
y = yc + ( y1 yc )u (eq. 6.6)
z = zc + ( z1 zc )u (eq. 6.7)
Logo, o valor de u para P2, com coordenadas (x2,y2,0), :
u = zc / ( z1 zc ) (eq. 6.8)
Compondo-se as equaes 6.5, 6.6 e 6.8 tem-se:
x2 = xc zc ( x1 xc ) / ( z1 zc ) (eq. 6.9)
y2 = yc zc ( y1 yc ) / ( z1 zc ) (eq. 6.10)
Escrevendo-se este resultado em forma matricial tem-se:
zc 0 xc 0
0 z yc 0
MP =
c
(eq. 6.11)
0 0 0 0
0 0 1 zc
Dividindo-se todos os elementos da matriz MP da equao 6.11 por um mesmo valor no se altera o
resultado da sua aplicao sobre um vetor em coordenadas homogneas. Assim, dividindo-se todos os
elementos por 1/zc tem-se:
1 0 xc / zc 0
0 1 yc / zc 0
MP = (eq. 6.12)
0 0 0 0
0 0 1 / zc 1
Considerando-se xc e yc iguais a zero na MP da equao 6.12, tem-se:
1 0 0 0
0 1 0 0
MP = (eq. 6.13)
0 0 0 0
0 0 1 / z c 1
O que est de acordo com a matriz de transformao perspectiva MTPz, deduzida anteriormente, no caso do
centro de projeo estar no ponto (0,0,zc) (fig. 6.2).
A matriz MP da equao 6.12 permite um controle explcito do ponto-de-fuga em funo do centro de
projeo, no entanto, gera apenas um ponto-de-fuga. Para a gerao de mais pontos-de-fuga pode-se associar
MP com matrizes de rotao. Note-se que, como exposto no captulo 4.3 e esboado nas figuras 4.10, 4.11 e
4.12, caso se rotacione o objeto possvel obter um nmero maior de pontos-de-fuga. Assim, fazendo-se a
multiplicao da matriz MP pela matriz RxRy (equao 5.4) tem-se a equao 6.14:
cos( ) + ( xc / zc) sen( ) cos( ) ( xc / zc) sen( ) sen( ) ( xc / zc) cos( ) cos( ) 0
sen( ) sen( ) + ( yc / zc) sen( ) cos( ) cos( ) ( yc / zc) sen( ) cos( ) sen( ) ( yc / zc) cos( ) cos( ) 0
MPR =
0 0 0 0
(1 / zc) sen( ) cos( ) ( 1 / zc) sen( ) ( 1 / zc ) cos( ) cos( ) 1
Supondo-se zc, sen(), sen(), cos(), cos() diferentes de zero, deriva-se os seguintes pontos-de-fuga:
y
P1
P2
CP
z
(0,0,1)
z
(-1,0,0)
(0,1,0)
y
(0,-1,0)
x (1,0,0)
(0,0,-1)
Figura 7.5: Diferentes especificaes de ponto-de-vista (vpoint).
z z
y
x z z x
y
X x
x (0,1,0) (0,-1,0)
Figura 7.6: Especificaes do ponto-de-vista em relao ao eixo y.
plo norte z
y
S
N xy
x
equador plo sul
(1,0,0)
(0,-1,0)
B C
A
Figura 7.8: Especificaes de ponto-de-vista para planta, vista lateral e frontal.
(-1,1,1)
(1,1,1)
(-1,-1,1) (1,-1,1)
(-1,1,-0.5) (1,1,-0.5)
(-1,-1,-0.5) (1,-1,-0.5)
Um uso interessante do conceito de projees para a gerao de objetos tridimensionais est disponvel no
3D Studio Max da AutoDesk. Este sistema permite que o usurio defina e ajuste formas que constituiro as
projees paralelas ortogrficas planta, vista lateral e vista frontal de um objeto 3D.
A construo do objeto parte da definio de uma forma base denominada de seo transversal (fig. 7.11).
Considerando o objeto 3D a perna torneada de uma mesa, a forma base a circunferncia que define o tubo a
ser torneado. Atravs da definio de um caminho para a replicagem da forma base (fig. 7.12) gerado um
objeto 3D denominado no 3D Studio de LOFT (objeto com elevao).
O torneamento do objeto LOFT realizado atravs de um recurso denominado de Fit Deformation.
Atravs desta deformao a forma superior (Fit X) e a lateral (Fit Y) do objeto desejado so associadas ao
objeto LOFT base para se obter a forma 3D composta (fig. 7.13). A edio das formas bem simples dado
que cada uma um conjunto de pontos interligados por linhas retas ou curvas e, assim, podem ser
modificadas por alterao de posio dos pontos, pela insero de mais pontos ou pelo aumento/diminuio
das formas em relao aos seus eixos. Definida a forma final do objeto, ele pode ser renderizado (fig. 7.14).
Seo Transversal
Fit X - Forma Vista Superior
TN
Coordenadas
Coordenadas Normalizadas
de Mundo
TD TD
Coordenadas
de Dispositivo
z
x
A terceira etapa do processo de fotografar o ajuste das lentes para definir o enquadramento desejado. Neste
sentido, ao se usar uma grande angular, pode-se aumentar o ngulo de enquadramento, possibilitando que um
espao maior ao redor do objeto alvo se enquadre na rea da foto (fig. 8.2.e). Na OpenGL, esta etapa
corresponde a definio do volume de visualizao (fig. 8.2.f), ou seja, o que vai ser realmente exibido na
tela, bem como do tipo de projeo utilizado para se projetar o contedo do volume de visualizao na tela.
Aps se bater a foto, a ltima etapa se refere a revelao e produo da fotografia. Neste etapa, no
possvel mais se proceder a alteraes na cena, no entanto, pode-se escolher toda regio ou uma sub-parte
dela para ser mapeada na rea da foto (fig. 8.2.g). Na OpenGL, o processo similar (fig. 8.2.h), no entanto,
tambm possvel se proceder a alteraes de propores entre a altura e a largura do retngulo onde est
enquadrada a cena, conforme comentado no tpico sobre transformao de viewport.
Concluindo, o processo de transformao na OpenGL est dividido em quatro etapas (fig. 8.4), cada um
explicado em maiores detalhes a seguir.
8.1.1. Transformaes de Visualizao e Modelagem
A OpenGL oferece uma funo utilitria para se definir uma transformao de visualizao (fig. 8.5),
baseando-se na posio do observador (ox,oy,oz), na posio do centro da cena (cx,cy,cz) e em um vetor que
indica o eixo vertical do observador (vx,vy,vz), cujo valor em geral (0, 1, 0). Essa funo tem a seguinte
sintaxe:
gluLookAt (GLdouble ox, GLdouble oy, GLdouble oz, GLdouble cx, GLdouble cy, GLdouble cz,
GLdouble vx, GLdouble vy, GLdouble vz);
Note-se que gluLookAt uma funo utilitria porque ela implementada pela combinao das
transformaes bsicas de visualizao e modelagem da OpenGL, ou seja, translao, rotao e escalamento.
A funo de translao que aplica sobre a matriz modelview tem a seguinte sintaxe:
glTranslatef (GLfloat x, GLfloat y, GLfloat z);
glTranslated (GLdouble x, GLdouble y, GLdouble z);
Onde x, y e z indicam as distncias transladadas nos eixos x, y ou z.
Tambm aplicada sobra a matriz modelview, a funo para se realizar uma rotao tem a seguinte sintaxe:
glRotatef (GLfloat angulo, GLfloat x, GLfloat y, GLfloat z);
glRotated (GLdouble angulo, GLdouble x, GLdouble y, GLdouble z);
Onde o parmetro angulo indica o ngulo de rotao, e x, y e z indicam em quais dos eixos ser aplicada a
rotao.
Matriz de Transform.
Matriz de Diviso de
Vrtice Visualizao
Projeo Perspectiva de Viewport
(Modelview)
x
y
z
w
Coordenadas Coordenadas Coordenadas
de objeto Coordenadas de recorte de janela
Coordenadas
de olho normalizadas
de dispositivo
(vx,vy,vz) (cx,cy,cz)
(ox,oy,oz)
x
Figura 8.5: Transformao de visualizao.
base
perto
longe
ra = largura/altura
/2 z
x
perto
longe
direo do
ponto-de-vista
base
perto distante
Para se especificar qual tipo de matriz ser feita a transformao, existe uma funo cuja sintaxe :
glMatrixMode (Glenum modo);
Onde o parmetro modo uma constante, que pode ser GL_MODELVIEW, GL_PROJECTION ou
GL_TEXTURE.
Para se carregar uma matriz, usa-se a seguinte funo:
glLoadMatrixf (const GLfloat *m);
glLoadMatrixd (const GLdouble *m);
Onde o parmetro m um vetor de 16 posies, contendo os valores da matriz. Outra funo permite que se
multiplique a matriz corrente por uma especificada como parmetro:
glMultMatrixf (const GLfloat *m);
glMultMatrixd (const GLdouble *m);
Neste caso, m tambm representa a matriz de transformao. Com isso, a matriz de transformao corrente
ser a multiplicao da antiga com a especificada pelo parmetro m.
H tambm uma funo para zerar a matriz corrente de transformao. Sua sintaxe :
glLoadIdentity ();
Desse modo, todas as transformaes so perdidas e os prximos desenhos sero feitos na posio (0, 0, 0).
Como exemplo do uso destas matrizes, o cdigo abaixo carrega a matriz identidade e depois aplica uma
escala nos trs eixos:
glMatrixMode (GL_MODELVIEW);
GLfloat m1[] ={ 1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0 };
glLoadMatrix (m1);
GLfloat m2[] ={ 2.0, 0.0, 0.0, 0.0,
0.0, 2.0, 0.0, 0.0,
0.0, 0.0, 2.0, 0.0,
0.0, 0.0, 0.0, 1.0 };
glMultMatrix (m2);
Este outro exemplo mostra como se desenha um cubo rotacionado com transformao perspectiva:
glMatrixMode (GL_PROJECTION);
gluPerspective (90.0, 1.0, 0.0, 100.0);
glMatrixMode (GL_MODELVIEW);
glRotatef (30.0, 0.0, 1.0, 0.0);
glTranslatef (0.5, 0.0, 0.0);
auxSolidCube (0.5);
Duas funes em OpenGL permitem que se guarde temporariamente a matriz corrente de transformao e
que se recupere-a posteriormente. As matrizes podem ser empilhadas e desempilhadas, recuperando-se os
seus valores. A grande diferena entre o mtodo de zerar a matriz e empilhar/desempilhar que no primeiro
as transformaes anteriores so perdidas, e neste ltimo elas podem ser recuperadas.
Para empilhar a matriz usa-se a funo glPushMatrix () e para recuper-la usa-se a funo glPopMatrix ().
Como exemplo, este cdigo desenha uma esfera no centro da tela, outra sua direita, e outra acima da
primeira:
glLoadIdentity ();
auxSolidSphere (0.2);
glPushMatrix ();
glTranslatef (0.5, 0.0, 0.0);
auxSolidSphere (0.2);
glPopMatrix ();
glTranslatef (0.0, 0.5, 0.0);
auxSolidSphere (0.2);
Se no fossem usadas as funes de empilhar e desempilhar na matriz de transformao, seriam desenhadas
uma esfera no centro, outra direita e outra acima desta ltima, pois as transformaes seriam calculadas
sucessivamente.