Escolar Documentos
Profissional Documentos
Cultura Documentos
apostilaCG PDF
apostilaCG PDF
11 12 13
21 22 23
31 32 33
1
2
3
(eq. 2.1)
denominada uma transformao afim. Neste caso, as coordenadas (x,y,z) do vetor
r
v , que definem um
ponto no espao, so uma funo linear de (x,y,z) e a
ij
e b
i
so constantes determinadas pelo tipo de
transformao. As transformaes afim tm a funo de modificar a posio dos pontos no espao, ou dos
objetos no espao. Essas transformaes tem a caracterstica geral de transformar linhas paralelas em linhas
paralelas e mapear pontos finitos em pontos finitos. O grupo de transformaes afins do espao define a
geometria afim, que estuda as razes e propores entre objetos geomtricos. Note-se que em geometria
afim, paralelismo um conceito importante, sendo relaes entre linhas paralelas uma parte substancial da
geometria e os teoremas da geometria afim so idnticos aos da geometria euclidiana.
Rotao, translao, escalamento, espelhamento e cisalhamento so exemplos de transformaes afins
detalhados a seguir.
2.1 Translao
A translao, alterao da posio de um ponto atravs da soma de constantes de deslocamento as suas
coordenadas, normalmente aplicada sobre todos os pontos de uma figura, de maneira a possibilitar a sua
movimentao no espao (fig. 2.1). O exemplo clssico em computao grfica de aplicao desta
transformao a funo pan, disponvel em vrios sistemas grficos.
Em termos de transformao afim, a translao corresponde soma de um vetor de deslocamento ao vetor
que define o ponto que se deseja deslocar. Assim, na equao 2.1, o vetor com as componentes b
i
corresponde ao vetor de deslocamento.
2.2 Escalamento (Mudana de Escala - Scaling)
A Mudana de Escala corresponde multiplicao das coordenadas de um ponto por valores iguais ou
diferentes. normalmente aplicada sobre todos os pontos de uma figura com o objetivo de ampliar ou
reduzir a sua dimenso ou ento distorcer a sua forma geomtrica (fig. 2.2). O uso clssico desta operao
em computao grfica a funo zoom in (ampliao) ou zoom out (reduo).
Fig. 2.1: Translao Fig. 2.2: Escalamento
Quando somente a operao de escalamento realizada, a matriz
A na equao 2.1 fica a matriz E, onde e
x
, e
y
,
e
z
, so os fatores de escala das coordenadas x, ye z, respectivamente. Observa-se facilmente que a aplicao desta
matriz sobre o vetor de coordenadas gera o vetor escalado
r
v , conforme descrito pelas equaes 2.2 e 2.3, a
seguir.
E =
e
e
e
x
y
z
0 0
0 0
0 0
(eq.2.2)
r
v =
e x
e y
e z
x
y
z
(eq.2.3)
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.
Figuras 2.3a, 2.3b, 2.3c - Rotaes em torno dos eixo z, x e y, respectivamente.
Supondo-se que a distncia do ponto P origem seja D, tem-se:
) cos( D x = (eq. 2.2) x D
/
cos( ) = + (eq. 2.4)
y D = sen( ) (eq. 2.3) y D
/
sen( ) = + (eq. 2.5)
Da trigonometria tem-se:
cos( ) cos( ) cos( ) sen( ) sen( ) a b b a b a + = (eq. 2.6)
sin a b b a b a ( ) cos( ) sen( ) sen( ) cos( ) + = + (eq. 2.7)
Usando-se as equaes 2.2, 2.3, 2.6 e 2.7 nas equaes 2.4 e 2.5 tem-se:
x x y
/
cos( ) sen( ) = (eq. 2.8)
y x y
/
sen( ) cos( ) = + (eq. 2.9)
Em forma matricial, as equaes 2.8 e 2.9 ficam:
x
y
x
y
/
/
cos( ) sen( )
sen( ) cos( )
(eq. 2.10)
Similarmente, a frmula 2.10 se aplica as rotaes das figuras 2.3b e 2.3c. No entanto, para se estender esta
frmula para rotaes tridimensionais, deve-se considerar primeiramente o problema da orientao dos
eixos. Note-se que:
vz vx vy
r r r
= (eq. 2.11) vx vy v z
r r r
= (eq.2.12)
- vy vx vz
v r r
= (eq. 2.13)
Neste caso, vx
r
, vy
r
e vz
r
so versores nas direes x, y e z, respectivamente. Nas figuras 2.3a, 2.3b e 2.3c
os resultados das equaes 2.11, 2.12 e 2.13 so indicados pelo contedo das circunferncias posicionadas do
lado esquerdo dos eixos. Sendo o contedo uma circunferncia menor, o eixo resultante do produto vetorial
dos eixos referenciados no plano tem sinal positivo, o que implica que o seu sentido do plano para o leitor.
Se o contedo uma cruz, o sinal negativo, sentido inverso. Assim, para manter a consistncia, a aplicao
da frmula matricial 2.10 deve considerar que os eixos referenciados no plano da figura 2.3c esto
invertidos, sendo o correto:
z
x
z
x
/
/
cos( ) sen( )
sen( ) cos( )
(eq. 2.14)
Considerando-se as figuras 2.3a, 2.3b e 2.3c e as frmulas 2.10 e 2.14, pode-se facilmente deduzir as frmulas
para o clculo no espao tridimensional da rotao de um ponto A para o ponto A, sendo o plano de rotao
perpendicular ao eixo z (fig. 2.4), y (fig. 2.5) e x (fig. 2.7).
x
y
z
x
y
z
/
/
/
cos( ) sen( )
sen( ) cos( )
0
0
0 0 1
(eq. 2.15) Rotao em torno do eixo z
x
y
z
x
y
z
/
/
/
cos( ) sen( )
sen( ) cos( )
0
0 1 0
0
(eq. 2.16) Rotao em torno do eixo y
x
y
z
x
y
z
/
/
/
cos( ) sen( )
sen( ) cos( )
1 0 0
0
0
(eq. 2.17) Rotao em torno do 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.
2.5 Rotao em torno de um eixo genrico
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:
MGR
tx c txy sz txz sy
txy sz ty c tyz sx
txz sy tyz sx tz c
=
+ +
+ +
+ +
2
2
2
(eq. 2.18)
Onde:
x,y,z = coordenadas de N t = 1- cos()
s = sin() c = cos()
Fig. 2.6: Rotao em Torno do Eixo x Fig. 2.7: Espelhamento
N
n
i
j
Q
P*
P
S
x, x*
y, y*
O
z, z*
Figura 2.8: Determinao da matriz de rotao em torno de um eixo genrico.
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.
i_1 i_2 i_3
Figura 2.9: Exemplo de cisalhamento
MTS_1 =
1
0 1
x
sh
(eq.2.19) MTS_2 =
1
0
x
y
sh
e
(eq.2.20) MTS_3 =
1 0
0 1
0 0 1
x
y
s
s
(eq.2.21)
z
y
x
z
y
x
Figura 2.10: Exemplo de cisalhamento no caso 3D.
2.5 Composio de Transformaes
Uma importante questo que sempre deve ser considerada com relao as transformaes afins se refere a
sua composio. Neste caso, a ordem em que elas so executadas pode alterar o resultado final esperado.
Considere-se ento duas transformaes afins, uma somente de rotao de 45 em torno do eixo z e outra
somente de translao de valor x ao longo do eixo x. Como a rotao realizada em relao a origem do
sistema de coordenadas, considerando-se a figura 2.11.a, a aplicao primeiro da rotao e depois da
translao resulta na figura 2.11.b e o inverso na figura 2.11.c.
y
x
z
y
y
z z
x x
Figura 2.11.a Figura 2.11.b Figura 2.11.c
Figura 2.11: Composio de transformaes.
y
x
z
y
x
z
y
z
x
y
x
z
y
z
x
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).
1 1 1
r r
r
v M v b
= + (eq. 3.2)
2 2 1 2 1 2
r v
r r
v M M v M b b
= + + (eq. 3.3)
=
r r
v M v (eq. 3.4)
r r
v M M M v
n n 1 1
... (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 M
T
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
y
z
l
m
n
x
y
z
x l
y m
z n
1
1
0
0
0
1
0
0
0
1
1 1
M
T
=
1 0 0
0 1 0
0 0 1
0 0 0 1
l
m
n
Considerando-se uma matriz M genrica de dimenso 4x4, quando ela aplicada sobre o vetor
r
v , em
coordenadas homogneas, gera o vetor
r
v * descrito a seguir: Para se calcular o vetor desejado, normaliza-se o
vetor
r
v *. Assim, supondo-se H 0, tem-se
r
v .
v
v M
x
y
z
X
Y
Z
H
* =
1
r
=
v
X H
Y H
Z H
/
/
/
1
Neste contexto, uma propriedade interessante e bastante til das coordenadas homogneas se refere a
representao de um ponto no infinito. Assim, considere-se o ponto sobre o eixo x indicado pelo vetor
r
v * e
v
v :
r
v
A
H
* =
0
0
r
=
v
A H /
0
0
1
Quando H 0, A H / , logo a aplicao de uma matriz de transformao em coordenadas
homogneas resulta em um ponto no infinito quando o seu vetor posicional for do tipo
r
v * descrito a seguir.
Em geral, utiliza-se os vetores infinitos
*
r
x ,
*
r
y e
*
r
z .
r
v
A
B
C
* =
*
r
x
1
0
0
0
*
r
y
0
1
0
0
*
r
z
0
0
1
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:
M
x x
x x
=
3 3 3 1
1 3 1 1
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.
Planar
Proj.
Cilindrica
Proj.
Cnica
Figura 4.1: Diferentes tipos de projees
Proj. Planares
Paralelas Perspectivas
Ortogrficas Oblquas
V. Lateral
V. Frontal
Planta
Axonomtricas
Isomtricas
Dimtricas
Trimtricas
Cabinet
Cavalier
Um-Ponto
Dois-Pontos
Trs-Pontos
Figura 4.2: rvore de Classificao das Projees
4.2 Projees Planares Paralelas
Projees paralelas so subclassificadas em ortogrficas e oblquas, dependendo da relao entre a direo
dos raios projetores e a normal ao plano de projeo (fig. 4.4). Em projees ortogrficas, as direes so as
mesmas. Em projees oblquas, so diferentes.
As projees ortogrficas vista lateral, vista frontal e planta constituem as projees normalmente utilizadas
em desenho tcnico (fig. 4.5). Elas tem a direo dos raios projetores e a normal ao plano de projeo
coincidentes com a direo dos eixos cartesianos. Elas oferecem uma viso parcial do objeto, no entanto,
mantm sem alterao as relaes de dimenses e ngulos do objeto projetado. Estas projees so
geralmente utilizadas em conjunto, contando tambm com uma projeo axonomtrica ou perspectiva.
As projees paralelas ortogrficas axonomtricas tem a direo dos raios projetores e a normal ao plano de
projeo coincidentes, porm distintas da direo das normais dos planos dos eixos cartesianos. Desta forma,
essas projees permitem a visualizao de vrias faces paralelas aos planos cartesianos de uma nica vez
(fig. 4.6)..
Projees axonomtricas distorcem os objetos, alterando as relaes de ngulos e dimenses de lados dos
objetos, no entanto, mantm as relaes de paralelismo entre eles. A alterao da dimenso dos lados
relacionada com a alterao da dimenso dos versores (vetores unitrios) em cada um dos eixos x, y e z,
quando projetados no plano. Assim, as projees axonomtricas se subdividem em dimtricas, quando dois
versores variam a dimenso igualmente quando projetados no plano; isomtricas, quando os trs versores
variam na mesma proporo (fig. 4.7); e trimtricas, quando os trs versores variam de forma diferenciada.
As projees paralelas oblquas tem a direo da normal ao plano de projeo distinta da direo dos raios
projetores (fig. 4.8). As projees paralelas oblquas se subdividem em cavalier e cabinet (fig. 4.9). Na
cabinet h um encolhimento na dimenso do versor perpendicular ao plano de projeo para corrigir a iluso
de que o objeto exibido maior na direo deste versor.
A
B
A
B
Raios Projetores
C. de Projeo
no Infinito
C. de Projeo
no Finito
A
B
A
B
Figura 4.3: Centros de projees
r
N
r
N
r
r
r
r
Figura 4.4: Direo da normal ao plano e dos raios projetores.
Vista
Lateral
Vista
Frontal
Planta
Figura 4.5: Projees ortogrficas planta, vista lateral e frontal.
Figura 4.6: Projees ortogrficas axonomtricas.
x
y
z
x
y
x
y
Dimtrica Isomtrica
Figura 4.7: Projees ortogrficas axonomtricas dimtrica e
isomtrica.
4.3) Projees Planares Perspectivas
O efeito visual de uma projeo perspectiva bastante realista, pois as dimenses de um objeto projetado
variam inversamente com relao ao centro de projeo, o que est de acordo com o modo de funcionamento
do sistema visual humano. Alm disto, como as projees axonomtricas, elas permitem a visualizao
conjunta de vrias faces normais aos eixos x, y, e z, de um objeto. No entanto, as projees perspectivas no
so teis para documentar precisamente as formas de um objeto, dado que as dimenses e os ngulos dos
seus lados podem sofrer alteraes aps a projeo. Em especial, pode haver perda do paralelismo entre as
linhas.
Figura 4.8: Projees oblquas.
Cavalier
Cabinet
Cavalier
Cabinet
Figura 4.9: Projees Oblquas Cavalier e Cabinet
Como a projeo perspectiva tem o centro de projeo localizado em um ponto finito, ocorre uma distoro
no objeto projetado que faz com que qualquer conjunto de linhas que sejam paralelas ao plano de projeo
convirjam para um mesmo ponto denominado ponto-de-fuga. O surgimento do ponto-de-fuga pode ser
melhor compreendido observando-se as figuras 4.10 e 4.11.
Na figura 4.10, um raio projetor parte do centro de projeo e incide sobre um ponto p da linha l_A. Quando
p tende a infinito, o raio projetor vai encontrar este ponto no infinito, o que significa que a linha RP vai ficar
paralela a linha l_A, cruzando, assim, o plano x sempre no mesmo ponto pf. Nota-se que um ponto sobre a
linha l_B, paralela a linha l_A, vai ser alcanado no infinito de forma similar ao ponto sobre a linha l_A, ou
seja, o raio projetor corta o eixo x no mesmo ponto pf.
Quando o raio projetor incide sobre uma linha paralela ao eixo de projeo, no tem ponto-de-fuga. A
explicao para este caso simples. Considere o ponto A da figura 4.11 que est sobre a linha l_A, paralela ao
plano xy. Assim, quando A tender a infinito, o raio projetor RP1 vai encontr-lo no infinito e, neste caso, estar
paralelo ao plano xy, o que evita o surgimento do ponto-de-fuga. Ao contrrio, o raio projetor RP2 que incide
sobre o ponto B sobre a linha l_B, perpendicular ao plano xy, vai tender origem quando B tender a infinito.
Neste caso, a projeo perspectiva do retngulo da figura 4.11 vai apresentar apenas um ponto-de-fuga. Para
que a projeo deste retngulo apresente mais de um ponto-de-fuga basta rotacion-lo (fig. 4.12), o que faz com
que as suas linhas paralelas fiquem inclinadas em relao ao plano xy.
Para melhor se compreender a relao entre os pontos-de-fuga e o centro de projeo, a figura 4.13 apresenta
a forma de se obter a projeo perspectiva de um paraleleppedo com lados paralelos ao eixo x e centro de
projeo sobre o eixo z. O objeto projetado do sistema de coordenadas 3D xyz no sistema de coordenadas
2D xy. Dado que a dimenso dos lados AB, CD, EF e GH no so visveis, a dimenso dos lados AB,
CD, EF e GH foram definidas arbitrariamente.
pXY pf
l_A
l_B
z
CP
p
RP
pXY
z
pf
A
B
RP1
RP2
CP
l_A
l_B
Figura 4.10 Figura 4.11
Figura 4.10: Centro de projeo e ponto-de-fuga em uma projeo perspectiva.
Figura 4.11: Projeo perspectiva de linhas paralelas e perpendiculares ao plano XY de
projeo.
Em funo do nmero de pontos-de-fuga associados s linhas paralelas aos trs eixos cartesianos, as
projees perspetivas se subdividem em projees de um ponto-de-fuga (fig. 4.14), de dois pontos-de-fuga
(fig. 4.15) e de trs pontos-de-fuga (fig. 4.16). Nota-se que cada conjunto de linhas paralelas no espao pode
ter associado um ponto-de-fuga. Assim, com o objetivo de definir um critrio de classificao, somente as
linhas paralelas aos eixos so consideradas.
Projees perspectivas de trs pontos-de-fuga so usadas menos frequentemente, dado que elas acrescentam
pouco realismo ao j alcanado pelas projees de dois pontos-de-fuga.
pXY
z
pf_1 pf_2
A
B
CP
Figura 4.12: Projeo perspectiva de linhas inclinadas em relao ao plano de projeo.
y
CP
PF_1 PF_2
z
A,B
C,D
E,F
G,H
A
B
G
H
E
F
C
x
y
Fig. 4.13: Projeo perspectiva de um cubo com lados paralelos ao eixo x.
z
x
y y
x
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 MP
vl
(eq. 5.2).
X
R =
1 0 0 0
0 0
0 0
0 0 0 1
cos( ) sen( )
sen( ) cos( )
(eq. 5.1)
Sendo = -90 e considerando-se a projeo no eixo xy, a matriz fica:
=
1 0 0 0
0 0 0 0
0 1 0 0
0 0 0 1
MPVL
(eq. 5.2)
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.
Figura 5.1a e 51.b: Projeo vista lateral.
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).
X Y
R R =
1 0 0 0
0 0
0 0
0 0 0 1
0 0
0 1 0 0
0 0
0 0 0 1
cos( ) sen( )
sen( ) cos( )
cos( ) sen( )
sen( ) cos( )
(eq. 5.3)
X Y
R R =
cos( ) sen( )
sen( ) sen( ) cos( ) cos( ) sen( )
sen( ) cos( ) sen( ) cos( ) cos( )
0 0
0
0
0 0 0 1
(eq. 5.4)
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:
X
X
X
X
X Y
u
x
y
z
R R
r
=
1
1
0
0
1 1
cos( )
sen( ) sen( )
sen( ) cos( )
(eq. 5.5)
Y
Y
Y
Y
X Y
u
x
y
z
R R
r
=
1
0
1
0
1
0
1
cos( )
sen( )
(eq. 5.6)
Z
Z
Z
Z
X Y
u
x
y
z
R R
r
=
1
0
0
1
1 1
sen( )
cos( ) sen( )
cos( ) cos( )
(eq. 5.7)
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:
( ) ( )
XY
x
u
x
x
x
y
r
= +
2
2
(eq. 5.8)
XY
x
u
r
= + cos ( ) (sen ( ) sen ( ))
2 2 2
(eq. 5.9)
Similarmente, para os versores sobre os eixos y e z tem-se:
XY
y
u
r
= cos( ) (eq.5.10)
XY
z
u
r
= + (sen ( ) cos ( ) sen ( )
2 2 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:
XY
x
XY
y
u u
r r
= (eq. 5.12)
cos ( ) sen ( ) sen ( ) cos ( )
2 2 2 2
+ = (eq. 5.13)
Da trigonometria tem-se:
cos ( ) sen ( )
2 2
1 + = (eq. 5.14)
Aplicando-se esta relao na equao 5.13, tem-se:
sen ( ) sen ( ) sen ( ) sen ( )
2 2 2 2
= (eq. 5.15)
sen ( ) sen ( ) / ( sen ( ))
2 2 2
1 = (eq. 5.16)
Uma maneira simples de se calcular os ngulos e considerar um valor fixo para o encolhimento no eixo
z. Assim, inicialmente ser suposto que a dimenso do versor projetado ser 1/2, ou seja, encolher pela
metade. Logo, da equao 5.11 tem-se:
( ) sen ( ) cos ( ) sen ( ) /
2 2 2 2
1 2 + = (eq. 5.17)
Aplicando-se a equao 5.16 e rearranjando, tem-se:
8 9 1 0
4 2
sen ( ) sen ( ) + = (eq. 5.18)
Fazendo-se x sen = ) (
2
, tem-se:
8 9 1 0
2
x x + = (eq. 5.19)
Resolvendo-se a equao 5.19, tem-se x=1/8 e x=1. A segunda raiz invlida porque origina valor zero no
denominador da equao 5.16. Usando-se a primeira raiz tem-se:
sen ( ) /
2
1 8 = sen ( ) /
2
1 7 = (eq. 5.20)
= 20 705 .
o
e = 22 208 .
o
(eq. 5.21)
Desta maneira aplicando-se os valores obtidos na equao 5.21, tem-se a seguinte matriz:
X Y
R R =
0 925820 0 0 377964 0
0133631 0 935414 0 327321 0
0353553 0 353553 0866025 0
0 0 0 1
. . .
. . .
. . .
. . .
(eq. 5.22)
D
MP =
0 925820 0 0 377964 0
0133631 0 935414 0 327321 0
0 0 0 0
0 0 0 1
. . .
. . .
. . .
. . .
(eq. 5.23)
A matriz MP
D
anterior permite que se realize, aps o zeramento da coordenada z, a projeo dimtrica (eq.
5.23), onde h o encolhimento por igual de duas coordenadas.
No entanto, o maior interesse na projeo isomtrica que permite o encolhimento por igual de todas as
coordenadas. Logo:
XY
x
XY
y
XY
z
u u u
r r r
= = (eq. 5.24)
Assim, alm da equao 5.13, para a determinao dos ngulos tem-se a seguinte equao:
sen ( ) cos ( ) sen ( ) cos ( )
2 2 2 2
+ = (eq. 5.25)
Similarmente a equao 5.16, derivada da 5.12, podemos derivar da 5.25 a equao:
sen ( ) ( sen ( )) / ( sen ( ))
2 2 2
1 2 1 = (eq. 5.26)
= sen ( ) sen ( )
2 2
1 2 sen ( ) /
2
1 3 =
sen( ) / sen( ) / = = 1 3 1 2 (eq. 5.27)
= 3526429 .
o
e = 450 .
o
(eq. 5.28)
Logo, substituindo os valores na matriz da equao 5.4, tem-se a matriz que permite a projeo isomtrica
(5.29), aps se zerar a coordenada z:
X Y
R R =
0 707107 0 0 707107 0
0 408248 0816597 0 408248 0
0577353 0577345 0577353 0
0 0 0 1
. . .
. . .
. . .
. . .
(eq. 5.29)
I
MP =
0 707107 0 0 707107 0
0 408248 0816597 0 408248 0
0 0 0 0
0 0 0 1
. . .
. . .
. . .
. . .
(eq. 5.30)
Neste caso, um fato interessante advm da anlise do ngulo que o versor no eixo x faz com o eixo x,
quando projetado no plano xy (fig. 5.2a).
Assim, da equao 5.5, tem-se:
X
u
r
=
cos( )
sen( ) sen( )
(eq. 5.31)
= tan( ) (sen( ) sen( )) / cos( )
tan( ) ( / / ) / / / = = 1 2 1 3 1 2 3 3 = 300 .
o
Este resultado bem conhecido de desenhistas, pois com um esquadro de 30 e 60 que eles desenham a
projeo de um objeto em uma folha de projeto.
A seguir esboado um exemplo de obteno de uma projeo isomtrica de um objeto. Este objeto o da
figura 4.7, e a matriz
I P
r
contm a descrio dos vetores de seus pontos (fig. 5.3a). O resultado est na figura
5.3b.
Figura 5.2a e 5.2b: Diferentes estruturas para a projeo isomtrica.
Figura 5.3a: Objeto a ser projetado. Figura 5.3b: Objeto projetado
isometricamente.
I I P M
A B C D E F G H
r
=
1 1 1 1 0 0 0 0
0 1 1 2 0 0 1 1 2 0
0 0 1 1 0 0 1 1
1 1 1 1 1 1 1 1
/ /
(eq. 5.32)
Uma considerao importante sobre projees isomtricas se refere ao fato que:
sen ( ) /
2
1 3 = = 3526 .
o
ou =144 74 .
o
2 / 1 ) (
2
= sen = 4500 .
o
ou =13500 .
o
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).
5.3 lgebra das Projees Planares Oblquas
Segundo o que foi exposto no captulo 4, as projees paralelas oblquas tem a direo do plano de projeo
distinta da direo dos raios projetores (fig. 4.8). As projees paralelas obliquas se subdividem em cavalier
e cabinet (fig. 4.9), sendo que na projeo cabinet h uma distoro na dimenso do versor perpendicular ao
plano de projeo, em geral, um encurtamento de 1/3 ou de 1/2. Alm disto, em ambos os casos, o ngulo
() que este versor forma com o eixo x pode ser de 45 ou 30.
A deduo da matriz de projeo oblqua relativamente simples. Considere-se, inicialmente, o ngulo que
a linha entre o ponto P1 e sua projeo P1 forma com o plano xy e o ngulo que formado pela projeo
da linha P1-P1 com o eixo x (fig. 5.4). O ngulo determina o grau de encurtamento ou de dilatao da
dimenso do versor, em especial, se =45.0 no h alterao de dimenso e se =60 h um encurtamento
pela metade. O ngulo no tem influncia sobre o tamanho do versor e, basicamente, o seu valor uma
questo de preferncia.
Quando o ponto est sobre o eixo z trivial a deduo da frmula de projeo, ou seja, sendo:
P z P d d 1 0 0 1
1
= = ( , , ) ( cos( ), sen( ))
P z P z z d z z d 2 0 0 2
2 2 1 2 1
= = ( , , ) (( / ) * ) cos( ), (( / ) * ) sen( ))
A generalizao da formulao para qualquer ponto pode tambm ser feita facilmente observando-se a figura
5.5. Assim, supondo-se z
1
igual a 1 e z
2
igual a z, tem-se:
P b z P z d b z d 2 0 2 = = + ( , , ) ( * cos( ), ( * ) sen( ))
P a z P a z d z d 3 0 3 = = + ( , , ) ( ( * ) cos( ), ( * ) sen( ))
Logo:
=
+
+
x
y
z
d
d
x
y
z
x z d
y z d
1
1 0 0
0 1 0
0 0 0 0
0 0 0 1 1
0
1
cos( )
sen( )
(( * ) cos( ))
(( * )sen( ))
(eq. 5.33)
Para exemplificar a aplicao da matriz de projeo oblqua, na matriz da equao 5.33 ser adotado d=1,
sem alterao da dimenso do versor, o que significa (=45.0), e =45.0, o que define uma matriz de
projeo obliqua cavalier (eq. 5.34).
O
M =
1 0 2 2 0
0 1 2 2 0
0 0 0 0
0 0 0 1
/
/
(eq. 5.34)
Figura 5.4: Esquema de projeo oblqua.
Aplicando-se M
O
sobre o objeto definido na fig. 5.3a, tem-se:
O O P M
A B C D E F G H
r
=
1 1 1 1 0 0 0 0
0 1 1 2 0 0 1 1 2 0
0 0 1 1 0 0 1 1
1 1 1 1 1 1 1 1
/ /
(eq. 5.35)
O
P
A B C D E F G H
r
=
+ +
+ +
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
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
( ) / ( ) / / /
( ) / / ( ) / /
(eq. 5.36)
d
Figura 5.5: Projeo oblqua de pontos fora do eixo base de projeo.
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:
O
M =
1 0 2 2 0
0 1 2 2 0
0 0 0 0
0 0 0 1
/
/
(eq. 5.33)
Aplicando-se esta nova matriz M
O
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.
O
P
A B C D E F G H
r
=
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
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
( ) / ( ) / / /
( ) / / ( ) / /
(eq. 5.34)
A
D
C
G
F
E
H
B
Figura 5.6: Objeto e sua projeo oblqua cavalier com =45.
180
P1
P2
P1
P2
Figura 5.7: Rotao da projeo de 180.0
A
B
C
D
E
F
G
H
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
Y
Z
H k
x
y
z
x
y
z
z k
=
+
1 0 0 0
0 1 0 0
0 0 1 0
0 0 1 1 1 1 / ( / )
(eq. 6.3)
=
+
+
+
x
y
z
X H
Y H
Z H
x z k
y z k
z z k
1 1
1
1
1
1
/
/
/
/ (( / ) )
/ (( / ) )
/ (( / ) )
(eq. 6.4)
Z
X
Y
x'
y'
x
y
z
CP
k
P
P
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
y
z
at ct k
bt ct k
ct ct k
1
1
1
1
1
/ (( / ) )
/ (( / ) )
/ (( / ) )
Se t tem-se
x
y
z
ka c
kb c
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:
r r r
v
at
b
c
v
a
bt
c
v
a
b
ct
1 2 3
1 1 1
=
, ,
r
v
1
,
r
v
2
e
r
v
3
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)
r r r
=
+
+
+
=
+
+
+
=
+
+
+
v
at c k
b c k
c c k
v
a c k
bt c k
c c k
v
a ct k
b ct k
ct ct k
1 2 3
1
1
1
1
1
1
1
1
1
1
1
1
/ (( / ) )
/ (( / ) )
/ (( / ) )
,
/ (( / ) )
/ (( / ) )
/ (( / ) )
,
/ (( / ) )
/ (( / ) )
/ (( / ) )
E quando t resulta em:
r r r
=
v
B
C
v
A
C
v
k
1
1
1
2
2
2
3
1 1
0
0
1
Mesmo sendo B1, C1, A2 e C2 constantes finitas,
r
v
1
e
r
v
2
, que so respectivamente a transformao
perspectiva de
r
v
1
e
r
v
2
, resultam em pontos que no espao tendem a infinito, ou seja, no h pontos-de-fuga
associados as linhas paralelas aos eixos x e y. Este resultado esperado, pois
r
v
1
e
r
v
2
definem linhas
perpendiculares ao eixo z que contm o centro-de-projeo. A transformao perspectiva de
r
v
3
resulta em
um ponto finito no espao, ou seja, h ponto-de-fuga pois
r
v
3
perpendicular ao eixo z que contm o centro
de projeo.
z
y
x
k
-k
PI
B*
A*
B
A
A
B
PF
Figura 6.2: Projeo de uma linha paralela ao eixo 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
convergncia dos pontos transformados para o ponto-de-fuga. Para t=0,
r
v
3
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 x x x u
a b a
= + ( )
y y y y u
a b a
= + ( )
Assim, no caso da figura 6.5 tem-se:
x x x x u
c c
= + ( )
1
(eq. 6.5)
y y y y u
c c
= + ( )
1
(eq. 6.6)
z z z z u
c c
= + ( )
1
(eq. 6.7)
Logo, o valor de u para P2, com coordenadas (x
2
,y
2
,0), :
u z z z
c c
= / ( )
1
(eq. 6.8)
Compondo-se as equaes 6.5, 6.6 e 6.8 tem-se:
x x z x x z z
c c c c 2 1 1
= ( ) / ( ) (eq. 6.9)
y y z y y z z
c c c c 2 1 1
= ( ) / ( ) (eq. 6.10)
Escrevendo-se este resultado em forma matricial tem-se:
MP
z x
z y
z
c c
c c
c
=
0 0
0 0
0 0 0 0
0 0 1
(eq. 6.11)
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/z
c
tem-se:
MP
x z
y z
z
c c
c c
c
=
1 0 0
0 1 0
0 0 0 0
0 0 1 1
/
/
/
(eq. 6.12)
Considerando-se xc e yc iguais a zero na MP da equao 6.12, tem-se:
MP
z
c
=
1 0 0 0
0 1 0 0
0 0 0 0
0 0 1 1 /
(eq. 6.13)
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,z
c
) (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:
MPR
xc zc xc zc xc zc
yc zc yc zc yc zc
zc zc zc
=
+
+
(cos( ) / sen( ))
(eq. 6.16)
PFz
x z
y z
c c
c c
=
+
xy
S
N
Figura 7.7: Esquema interativo de especificao de ponto-de-vista.
C
A
B
(1,0,0)
(0,-1,0)
(0,0,1)
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)
Figura 7.9: Diferentes especificaes de ponto-de-vista.
(1,-1,-0.5)
(1,1,-0.5)
(-1,1,-0.5)
(-1,-1,-0.5)
Figura 7.10: Diferentes especificaes de ponto-de-vista.
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).
Fit X - Forma Vista Superior
Fit Y - Forma Vista Lateral
Seo Transversal
Figura 7.11 Figura 7.12
Figura 7.11: Vistas do objeto Faca.
Figura 7.12: Definio da forma base do objeto Faca.
Fit X - Forma Superior
Fit Y - Forma Lateral
Figura 7.13: Deformaes do objeto LOFT base.
Figura 7.14: Objeto final renderizado.
8. Transformaes e Mapeamento de Coordenadas em Bibliotecas Grficas
Diferentes bibliotecas grficas utilizam esquemas diversos de transformaes e mapeamento de coordenadas.
No caso de uma biblioteca grfica que utiliza primitivas grficas bidimensionais, como o GKS (Graphical
Kernel System), por exemplo, o modo de mapeamento realizado atravs da definio de duas
transformaes.
No GKS, especificado os limites da rea de trabalho do usurio, cujo espao denominado de coordenadas
de mundo, um retngulo em seu interior define a rea de interesse para a visualizao (fig. 7.1). Um segundo
retngulo define o espao das coordenadas normalizadas, na qual o retngulo mapeado atravs da
transformao de normalizao. Nesta etapa pode se habilitar ou no operaes de recorte (clipping) bem
como de preservao ou no de relaes de aspecto (aspect ratio), ou seja, o objeto original a ser exibido
pode ser achatado ou esticado ou mantido com suas propores iniciais inalteradas. A transformao de
dispositivo mapeia as coordenadas de um retngulo definido no espao das coordenadas normalizadas no das
coordenadas de dispositivo. Nesta fase, no so permitidas operaes de recorte e de alterao da relao de
aspecto.
Coordenadas
de Mundo
Coordenadas
Normalizadas
Coordenadas
de Dispositivo
TN
TD
TD
Figura 8.1: Mapeamento de coordenadas no GKS.
8.1 Esquema de Transformaes na Biblioteca Grfica OpenGL
O processo de transformao na OpenGL baseado em uma analogia com as etapas usualmente seguidas
para se fotografar um objeto. Inicialmente, h o posicionamento da cmera, ou seja, regulagem do trpode e
da direo para a qual a cmera aponta, de forma a se definir uma regio de interesse para a foto (fig. 8.2.a).
Na OpenGL, isto significa definir o ponto-de-observao, o qual determina o volume de visualizao no
mundo em questo (fig. 8.2.b), e est relacionado com a transformao de visualizao (viewing
transformation).
A segunda etapa no processo de fotografar o posicionamento do objeto (fig. 8.2.c), o que significa
determinar qual parte dele dever aparecer mais acentuadamente na fotografia. Para tanto, o que se faz
mover ou rotacionar o objeto. Na OpenGL, esta etapa tambm relacionada a definio de posicionamento
do modelo (fig. 8.2.d), sendo denominada de transformao de modelagem (modeling transformation), que
se caracteriza por transformaes de rotao, translao e escalamento.
Note-se que estas duas etapas no processo da fotografia se confundem, dado que possvel se obter a mesma
foto rotacionando ou transladando o objeto ou a cmera. Neste sentido, a figura 8.3.a exemplifica como
pode-se afastar um objeto do ponto-de-observao, cuja posio no se altera e a figura 8.3.b como afastar o
ponto-de-observao do objeto, cuja posio permanece inalterada. Assim, na OpenGL as transformaes de
visualizao e modelagem so tratadas de forma combinada como modelview transformation.
Figura 8.2.a: Posicionamento de
cmera.
Figura 8.2.b: Posicionando o
volume de visualizao no mundo.
Figura 8.2.c: Posicionando o objeto
(modelo).
Figura 8.2.d: Posicionando o
modelo no mundo.
Figura 8.2.e: Ajustando a lente para
o enquadramento.
Figura 8.2.f: Determinando a forma
do volume de visualizao.
Figura 8.2.g: Fotografia
Figura 8.2.h: Viewport
z
x
y
z
x
y
Figura 8.3.a: Translao do objeto. Figura 8.3.b: Translao do ponto-
de-observao.
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
Visualizao
(Modelview)
Matriz de
Projeo
Diviso de
Perspectiva
Transform.
de Viewport
Vrtice
Coordenadas
de olho
Coordenadas
de recorte
Coordenadas
normalizadas
de dispositivo
Coordenadas
de janela
Coordenadas
de objeto
x
y
z
w
Figura 8.4: Esquema de transformao de coordenadas na OpenGL.
x
z
y
(cx,cy,cz)
(ox,oy,oz)
(vx,vy,vz)
Figura 8.5: Transformao de visualizao.
A sintaxe da funo de escalamento :
glScalef (GLfloat x, GLfloat y, GLfloat z);
glScaled (GLdouble x, GLdouble y, GLdouble z);
Onde os parmetros x, y e z indicam o valor a ser multiplicado sobre cada eixo.
8.1.2. Transformao de Projeo
Esta transformao utilizada para definir o volume de visualizao, os planos de corte e, como o prprio
nome diz, determinar o modo de projeo do espao tridimensional no plano. Em termos de projeo
perspectiva, existem duas funes que realizam tal tipo de operao. A primeira :
glFrustum (GLdouble esquerda, GLdouble direita,
GLdouble topo, GLdouble base,
GLdouble perto, GLdouble longe);
Onde os parmetros esquerda e direita indicam os limites em x, topo e base indicam os limites em y, e perto
e longe indicam os limites em z (fig. 8.6). A palavra Frustum se refere a piramide truncada que fica entre os
planos perto e longe.
A segunda funo, mais usada que a primeira por ser operacionalmente mais intuitiva, :
gluPerspective (GLdouble acdvy, GLdouble ra, GLdouble perto,GLdouble longe);
Onde acdvy define o ngulo do campo de viso no eixo y, ra (razo de aspecto) define a relao x/y, para se
determinar o campo de viso em x, e perto e longe definem os limites ao longo do eixo z (fig. 8.7).
A projeo da cena no plano tambm pode ser realizada de acordo com uma projeo ortogrfica. A sintaxe
da funo que realiza esta operao :
glOrtho (GLdouble esquerda, GLdouble direita,
GLdouble topo, GLdouble base,
GLdouble perto, GLdouble longe);
Os parmetros desta rotina funcionam de forma similar ao da funo glFrustum.
Note-se que, como explicado anteriormente, as projees perspectivas permitem que se tenha uma viso mais
realstica de uma cena, dado que os objetos da cena mais distante do observador aparecero menores, e, assim,
alteram as relaes de tamanho e ngulo de lados do objeto. As projees ortogrficas, onde os raios projetores
so perpendiculares ao plano de projeo, evitam estas distores.
longe
perto
topo
esquerda direita
base
Figura 8.6: Definio do volume de visualizao.
longe
perto
ra = largura/altura
x
y
z
/2
Figura 8.6: Definio do volume de visualizao pela rotina gluPerspective.
8.1.3. Transformao de Viewport
Depois que todos os vrtices sofreram as transformaes de modelview e de projeo, bem como os vrtices
fora do volume de visualizao foram eliminados, os vrtices sero mapeados na janela de exibio atravs
da transformao de viewport. A funo que define o mapeamento na viewport :
glViewport (GLint x, GLint y, GLsizei largura, GLsizei altura);
Onde (x,y) definem o ponto esquerdo-abaixo da janela de exibio e largura e altura definem as suas
dimenses. Caso a relao de aspecto (largura/altura) no for igual a do volume de visualizao, a imagem
poder ser exibida com distoro (fig. 8.8).
8.1.4. Matrizes de Transformao
A OpenGL possibilita duas maneiras de se obter transformaes: a primeira atravs do uso de funes
especficas para rotao, translao e escala, e a segunda atravs do clculo de uma matriz resultante de todas
as transformaes e a sua aplicao sobre os objetos da cena. Esta biblioteca oferece uma srie de funes
destinadas para a manipulao direta de matrizes de transformao. Pode-se carregar uma matriz da memria
e armazen-la diretamente, sem o uso das funes descritas anteriormente.
perto distante
esquerda topo direita
base
direo do
ponto-de-vista
Figura 8.7: Projeo ortogrfica.
Sem distoro Com distoro
Figura 8.8: Mapeamento do volume de visualizao para a viewport.
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.
8.2 Esquema de Transformaes na Biblioteca Grfica VRML
O esquema de transformao em VRML mais simples do que o da OpenGL. Ele se baseia em um eixo de
coordenadas 3D fixo e centrado no centro da janela de exibio. Objetos slidos (cilindros, cubos, etc) so
posicionados de forma centralizada em relao a este eixo. Os objetos podem ser deslocados no espao em
relao a este eixo, bem como possvel se definir um ponto-de-observao de forma semelhante ao da
OpenGL.
No h transformao de viewport, o que implica que relaes de aspecto no podem ser alteradas. Alm
disto, a VRML adota uma unidade padro de medida que o metro, isto para possibilitar a compatibilizao
de diferentes mundos.
As transformaes em VRML so realizadas atravs do node (bloco fundamental de construo de um
arquivo VRML) Transform que possui alguns campos que definem rotao, translao, escalamento e
qualquer combinao das transformaes citadas acima. Um node Transform afeta todos os nodes que esto
dentro dele e ainda possui um efeito acumulativo.
A translao feita usando-se um campo translation de um node Transform que especifica trs valores de
movimentao do objeto ao longo dos eixos x, y e z. A VRML segue a conveno da regra da mo direita
para a orientao dos eixos.
O exemplo abaixo descreve como se realizar a translao de -2.4 unidades no eixo x, 2 unidades no eixo y e 3
unidades no z, de um cilindro com 3m de raio da base e 6m de altura em VRML 2.0.
#VRML V2.0 utf8
Transform {
translation -2.4 2 3
children[
Shape {
appearance Appearance {
material Material { }
}
geometry Cylinder {
radius 3
height 6
side TRUE
top FALSE
bottom TRUE
}
}
]
}
O campo rotation de um Transform especifica a rotao de um objeto ao redor de um determinado eixo. Este
campo consiste de quatro valores. Os trs primeiros definem o eixo de rotao segundo a sequncia x y z. O
ltimo define quantos radianos o objeto deve ser rotacionado em torno do eixo de rotao. Por exemplo, o
trecho de cdigo abaixo descreve o mesmo cilindro do exemplo anterior rotacionado de 1.57 radianos ao
redor do eixo x.
#VRML V2.0 utf8
Transform {
rotation 1 0 0 1.57
children[
Shape {
***
}
]
}
A rotao pode ser realizada no sentido horrio ( valor do ngulo de rotao negativo ) e no sentido anti-
horrio ( ngulo positivo ). Como mencionado anteriormente, deve-se atentar para que quando for se
rotacionar um objeto fora da origem dos eixos, deve-se primeiro transladar esta origem para um ponto
estabelecido do objeto, realizar a rotao e depois retornar a origem dos eixos a sua posio inicial.
Escalamento aumenta ou diminui o tamanho dos objetos que estiverem dentro de um node Transform. Esta
transformao especificada pelo campo scale, o qual possui trs nmeros que representam a escala nos
eixos x, y e z respectivamente. scale 1 1 1 significa nenhuma modificao no objeto. scale com valor 0 em
qualquer direo torna o objeto infinitamente pequeno na direo. Como ilustrao, se for alterado parte do
ltimo exemplo tem-se:
#VRML V2.0 utf8
Transform {
scale 1.23 1 1
children[
Shape {
***
}
]
}
Nesta situao o objeto ser aumentado em 23% na direo do eixo x.
A combinao dos campos do node Transform podem realizar as mais complicadas transformaes. Quando
usa-se uma combinao de transformaes deve-se considerar que:
A ordem em que uma srie de transformaes aplicada faz diferena.
A transformao mais recente aplicada primeiro.
A ordem em que uma srie de transformaes aplicada dentro de um nico node Transform fixa.
Primeiro aplicado o escalamento, depois a rotao e por fim a translao. Se for necessrio que isto
ocorra em ordem diferente da especificada acima, deve-se usar vrios nodes Transform.
Abaixo tem-se um exemplo de um node Transform que combina todas as transformaes possveis em
VRML.
#VRML V2.0 utf8
Transform {
scale 1.23 1 1
rotation 0 1 0 1.69
translation 4.5 1 0.4
children[
Shape {
appearance Appearance {
material Material { }
}
geometry Cylinder {
radius 3
height 6
side TRUE
top FALSE
bottom TRUE
}
}
]
}
Em relao ao posicionamento do ponto-de-observao, o node ViewPoint descreve uma posio potencial e
uma orientao para a observao de uma cena. Criar um ViewPoint como posicionar uma cmera em um
determinado ponto para que o cenrio seja visto a partir dele. Pode-se especificar, tambm, um campo de
viso, indicando o quanto a cena visvel. Isto funciona de forma similar ao parmetro acdvy na rotina
gluPerspective da OpenGL e um pequeno field of view deixa parte de um cenrio visvel, ao contrrio de um
grande field of view que deixa grande parte do cenrio visvel.
Segundo a especificao da VRML 2.0, o node ViewPoint definido da seguinte maneira:
ViewPoint {
position 0 0 10
orientation 0 0 1 0
fieldOfView 0.785398
description
jump TRUE
}
onde,
position - especifica a posio relativa do node ViewPoint em relao ao sistema de coordenadas.
orientation - especifica a rotao relativa a uma orientao padro. A orientao padro aquela que o
usurio observa a cena percorrendo-a no sentido do eixo -z , com +x direita e +y para cima. Uma
simples rotao da orientao ( rotao realizada sobre um eixo arbitrrio ) suficiente para especificar
qualquer combinao de direes de viso. Pode-se colocar dois campos orientation para um node
ViewPoint. Os campos position e orientation so afetados pela hierarquia das transformaes.
fieldOfView - especifica um campo de viso em radianos. Ele pode variar de 0 a , sendo que o ngulo pr-
assumido 45.
description - descreve o ponto de vista que o usurio est utilizando.
jump - indica se o browser pode saltar para um outro ViewPoint que foi definido.
9. Referncias
Cap. 1: [CARL78], [MARR82]
Cap. 2: [FOLEY90], [ROGER90]
Cap. 3: [FOLEY90], [ROGER90], [BLINN92a], [BLINN92b]
Cap. 4, 5, 6: [CARL78], [FOLEY90], [GLASS90], [ROGER90], [SNYDE84]
Cap. 7: [PETER96], [KALAM96]
Cap. 8: [NEID93], [BLINN93], [HART96], [SCHR96], [RICH96]
Cap. 9: [SOUTH92], [HODGE92], [ROGER90], [BALLA82], [BAYA95], [SLATER93], [KELSO92]
[BALLA82] Computer Vision. Dana H.Ballard, Christopher M.Brown. Prentice-Hall, 1982.
[BAYA95] Computing non-planar perspectives in real time. Salvador Bayarri, Computers & Graphics
19(3), 1995.
[BLINN93] A Trip Down the Graphics Pipeline: The Homogeneous Perspective Transformation. James F.
Blinn, IEEE Computer Graphics & Applications, Maro, 1992.
[BLINN92a] Uppers and Downers. James F. Blinn, IEEE Computer Graphics & Applications, Maro, 1992.
[BLINN92b] Uppers and Downers II. James F. Blinn, IEEE Computer Graphics & Applications, Maio,
1992.
[CARL78] Planar Geometric Projections and Viewing Transformations. I. Carlbom, J. Paciorek,
Computing Surveys, v.10, n.4, dezembro de 1978.
[EZZI93] The Scaling Behavior of Viewing Transformations. S. S. Abi-Ezzi, L. A. Shirman, IEEE
Computer Graphics & Applications, Maio, 1993.
[FOLEY90] Computer Graphics - Principles and Practice. J. D. Foley, A. van Dam, S. K. Feiner, J. F.
Hughes, Addison-Wesley, 1990, segunda-edicao.
[GLASS90] Graphics Gems. S. Glassner, Academic Press Professional, 1990, paginas 485 a 493.
[HART96] The VRML 2.0 Handbook: Building Moving Worlds on the Web. Jed Hartman, Josie
Wernecke, Addison-Wesley Pub Co, 1996.
[HODGE92] Tutorial: time-multiplexed stereoscopic computer graphics. Larry F.Hodges, IEEE Computer
Graphics & Applications, 12(2), 92.
[KALAM96] AutoCAD para Desenhos de Engenharia. Alan Kalameja, Makron Books, 1996
[KELSO92] Perspective projection: artificial and natural. Patterson Kelso, Engineering Design Graphics
Journal, 56(3), 1993.
[NEID93] OpenGL Programming Guide. Jackie Neider, Tom Davis, Mason Woo, Addison Wesley, 1993.
[PETER96] 3D Studio MAX Fundamentals. Michael Todd Peterson, New Riders Publishing, 1996.
[RICH96] Opengl Superbible: The Complete Guide to Opengl Programming for Windows Nt and
Windows 95. Richard S., Jr Wright, Michael Sweet, Waite Group Pr, 1996.
[ROGER90] Mathematical Elements for Computer Graphics. David F. Rogers, J. Alan Adams, McGraw-
Hill, segunda edicao, 1990
[SCHR96] The Visualization Toolkit: An Object-Oriented Approach to 3-D Graphics. Will Schroeder, Bill
Lorenson, William Schroeder, Prentice Hall Computer Books, 1996
[SLATER93] Simulating peripheral vision in immersive virtual environments. Mel Slater, Martin Usoh,
Computers & Graphics 17(6), 1993
[SOUTH92] Transformations for stereoscopic visual simulation. David A.Southard, Computers & Graphics
16(4), 1992
[SNYDE84] Map projections used by the US Geological Survey. J. P. Snyder, US Government printing
Office, Washington, segunda edicao, 1984