Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ndice
1-
2-
34-
5.
6.
7.
8.
9.
04
05
06
06
11
11
11
12
13
14
14
15
17
19
19
20
22
26
26
26
30
34
38
42
42
44
45
46
46
48
51
Objetivo do Curso:
Proporcionar o aprendizado de tcnicas e conceitos bsicos de computao grfica, que podem ser
utilizados para o desenvolvimento e/ou avaliao e/ou uso de aplicativos grficos.
Programa Resumido:
12345-
6-
78-
Bibliografia
J. Foley, A. van Dam,. S. Feiner, J. Hughes - Computer Graphics - Principles and Pratices.
Addison-Wesley 1990.
D. Hearn, M. Pauline Baker - Computer Graphics. Prentice Hall - Second Edition - 1994
W. M. Newman, R. F. Sproull -Principles of Interactive Computer Graphics. McGraw Hill - 1979
D. F. Rogers et all - Mathematical Elements for Computer Graphics. McGraw Hill - 1976
Romero Tori et all.- Fundamentos de Computao Grfica.
Livros Tcnicos e Cientficos Editora 1987
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
Gomes, J. & Velho, L. - Computao Grfica Volume 1. IMPA, RJ, 1998
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)
Fsica
Outras ...
Matemtica
Computao
Grfica
Medicina
Psicologia
Eng.
Eletrnica
Artes
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.
1.1
Data
Base
Application
Program
Metafile
Device - Independent
Graphics Package
Device
Driver
Device
Driver
Metafile
Reader
Virtual
Device
Interface
Metafile
Writer
Virtual
Device
Metafile
Current
Terminal
Future VDI
Terminal
Current
Plotter
Sistema Operacional
Isto implica em priorizar o desenvolvimento para estaes de trabalho com sistema operacional
UNIX ou microcomputadores com ambiente Windows, OS2, Mac, etc.
2)
Biblioteca Grfica
A biblioteca grfica contem as funes que o aplicativo aciona para a gerao da primitivas
grficas.
Um importante fator relacionado as bibliotecas grficas o da portabilidade do aplicativo em
termos de ambiente computacional e de dispositivos, ou seja, a biblioteca grfica a ser utilizada
deve ser passvel de acesso na maior gama possvel de computadores e garantir a sua
independncia em relao aos dispositivos grficos, permitindo que atravs de pequenos
programas denominados device drivers se realize a comunicao entre a biblioteca e os
dispositivos, permitindo, assim, que a substituio de um dispositivo grfico seja feita de forma
simples.
O implementador de qualquer sistema grfico tem a sua disposio um enorme conjunto de
bibliotecas grficas:Core, Dore, XFDI, Starbase, GKS, PHIGS, GL, OpenGL, etc, no entanto,
como atualmente a biblioteca grfica OpenGL tem se tornado um padro de fato, dado que os
grandes produtores de software e hardware tem priorizado o seu uso, a implementao de
qualquer aplicativo grfico deve considerar prioritariamente a sua utilizao.
Outra biblioteca que est se tornando bastante importante a DirectX da Microsoft, dado que
ela suportada por uma empresa lder no mercado mundial de software.
3)
Sistema de enjanelamento
1.2
Conceitos de CAD
A palavra CAD (Computer Aided Design) se refere ao processo de se utilizar um computador para
auxiliar no projeto dos mais variados produtos, tais como, um edifcio, um automvel, um nvio, uma
espaonave, um eletrodomstico, um tapete, uma roupa, etc.
O objetivo principal de uma ferramenta CAD permitir a elaborao do projeto de um produto com
maior qualidade, rapidez e preciso. Em termos industriais, isto significa aumentar a qualidade e a
eficincia de um produto e diminuir o seu custo de produo.
Sistemas CAD tem por objetivo auxiliar o projetista em todo ou em parte do processo de criao,
manipulao e representao de desenhos e projetos. So implementados atravs de conceitos de
computao grfica, tais como, interfaces grficas interativas, tcnicas de gerao de grficos 2D ou
3D, rendering, animao, etc.
Em geral, sistemas CAD funcionam de forma integrada a sistemas CAM (Computer Aided
Manufacturing) que disponibilizam recursos para a transformao do produto projetado no sistema
CAD em cdigos de controle das mquinas responsveis pela manufatura do mesmo.
Atualmente, sistemas CAD/CAM sofisticados fazem parte de um conjunto maior de programas
denominado de sistema de gerenciamento de produo industrial (Management Information System,
MIS), cuja funo gerenciar todas as etapas de produo, o que envolve controle de estoque, de
mquinas na linha de montagem, de inspeo de qualidade, etc.
1.3
ativao de cada ponto na tela, atravs de uma matriz de pontos, onde est armazenado o estado de
cada um deles. Assim, o tamanho da memria de pontos proporcional a resoluo da tela. A
modificao da imagem gerada realizada atravs da alterao dos valores da matriz de pontos, o que
realizado pelo controlador de exibio, sob o controle da CPU. Este tipo de arquitetura a mais
utilizada atualmente e os modernos terminais por varredura permitem a gerao de imagens com
altssima qualidade e grande variedade de elementos.
CPU
.
.
.
MOVE
10
15
LINE
400
300
.
.
.
Controlador
de Exibio
Refresh
Buffer
Teclado
Mouse
Figura 1.3 - Terminal vetorial
0 0 0 0 0
0 0 0 1 1
0 0 1 0 0
0 1 0 0 0
0 1 0 1 1
0 1 0
0 0 0
0 0 0
1 0 0
0 1 0
0 1 0
Terminal
de Vdeo
CPU
Controlador
de Exibio
Teclado
Mouse
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
Perifricos
CPU
BUS
Controlador
de Vdeo
Memria
do Sistema
Monitor
Dispositivos
Perifricos
CPU
BUS
Memria
do Sistema
Frame
Buffer
Controlador
de Vdeo
Monitor
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
Perifricos
CPU
Arquitetura
com Proces.
Grfico
BUS
Processador
Grfico
Memria do
Processador
Grfico
Memria
do Sistema
Frame
Buffer
Controlador
de Vdeo
Monitor
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
Buffer
Monitor
Pixel -> 67
(x,y)
0
0
Xmax
Pixel exibido
em (x,y)
01000011
Red
255
67
Green
Blue
2.
Transformaes Afins
Uma transformao de coordenadas da forma:
r
r
r
v = A v + b
ou
x /
a 11
/
y = a 21
z /
a 31
a 12
a 22
a 32
a13
a 23
a 33
x
y +
z
b1
b
2
b3
(eq. 2.1)
denominada uma transformao afim. Neste caso, as coordenadas (x,y,z) do vetor v , que definem um
ponto no espao, so uma funo linear de (x,y,z) e aij e bi 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 bi
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).
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
E= 0
0
0
ez
0
ey
0
ex x
r
v = ey y (eq.2.3)
ez z
(eq.2.2)
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.
x = D cos( )
(eq. 2.2)
x / = D cos( + )
y / = D sen( + )
(eq. 2.4)
(eq. 2.5)
Da trigonometria tem-se:
(eq. 2.6)
(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 cos( ) y sen( )
(eq. 2.8)
y / = x sen( ) + y cos( )
(eq. 2.9)
x/
cos( ) sen( ) x
/ =
sen( ) cos( ) y
y
(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:
r
r
r
r
r
r
vx = vy v z (eq.2.12)
vz = vx vy (eq. 2.11)
r
r
v
- vy = vx vz (eq. 2.13)
r r
r
Neste caso, vx , vy e vz 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/
cos( ) sen( ) z
/ =
sen( ) cos( ) x
x
(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).
cos( ) sen( ) 0 x
x/
/
x/
cos( ) 0 sen( )
/
1
0
y = 0
z/
sen( ) 0 cos( )
x
y (eq. 2.16)
z
x/
1
0
0
/
y = 0 cos( ) sen( )
z/
0 sen( ) cos( )
x
y (eq. 2.17)
z
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.
tx 2 + c txy sz txz + sy
(eq. 2.18)
Onde:
x,y,z
s
= coordenadas de N
= sin()
= 1- cos()
= cos()
y, y*
k
P*
x, x*
O
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.
i_1
i_2
i_3
1 sh x
MTS_1 =
(eq.2.19)
0 1
1 0 s x
MTS_3 = 0 1 s y
0 0 1
1 sh x
MTS_2 =
(eq.2.20)
0 e y
(eq.2.21)
y
y
x
x
z
z
Figura 2.11.a
Figura 2.11.b
Figura 2.11: Composio de transformaes.
y
y
Figura 2.11.c
y
x
x
z
z
z
x
z
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
v =
r
r
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
v1 = M1
r
v2 = M2
r
v = M
r
v = Mn
r
+ b1
v
M1 v +
r
v
r
v
M n1
...
(eq. 3.2)
r
r
M 2 b1 + b2
(eq. 3.3)
(eq. 3.4)
r
M1 v
(eq. 3.5)
x
1 0 0 l
y
= 0 1 0 m
0 0 1 n
1
x
x+l
y
y + m
=
z
z+n
1
1
1
0
MT =
0
0 0 l
1 0 m
0 1 n
0 0 1
Considerando-se uma matriz M genrica de dimenso 4x4, quando ela aplicada sobre o vetor v , em
r
a seguir: Para se calcular o vetor desejado, normaliza-se o
coordenadas homogneas, gera o vetor v * descrito
r
r
vetor v * . Assim, supondo-se H 0 , tem-se v .
v
v* =
x
y
M
z
1
X
Y
=
Z
H
X / H
Y / H
r
v =
Z / H
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
0
r
v* =
0
H
A / H
0
r
v =
0
r
r
r
Em geral, utiliza-se os vetores infinitos x * , y * e z * .
A
B
r
v* =
C
0
1
0
r*
x =
0
0
0
1
r
y * =
0
0
0
0
r*
z =
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:
3x3 3x1
M =
1x3 1x1
1x3: produz projeo perspectiva
3x3: produz uma transformao afim
do tipo, rotao e escalamento
1x1:
3x1:
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 (14041472). 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
Perspectivas
Oblquas
Um-Ponto
Dois-Pontos
Cabinet
Cavalier
Trs-Pontos
V. Lateral
Axonomtricas
Isomtricas
Dimtricas
Trimtricas
C. de Projeo
no Infinito
A
A
A
B
A
B
C. de Projeo
no Finito
B
B
Raios Projetores
r
r
r
N
r
N
Planta
Vista
Lateral
Vista
Frontal
Dimtrica
Isomtrica
x
Cavalier
Cabinet
Cavalier
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.
l_A
A
RP
l_B
pf
l_B
pXY
pXY
pf
RP1
RP2
l_A
CP
CP
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.
A
B
pf_2
pXY
pf_1
CP
z
C,D
A,B
E,F
G,H
PF_1
PF_2
y
CP
C
A
E
G
y
H
PF-1
PF-2
PF-1
PF-2
PF-3
Figura 4.16: Projeo perspectiva com trs pontos-de-fuga.
5.
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).
RX
0
0
1
0 cos( ) sen( )
=
0 sen( ) cos( )
0
0
0
0
0
(eq. 5.1)
MP
VL
1
0
=
0
0 0 0
0 1 0
0 0 0
0 0 1
(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.
RX
RX
0
0
1
0 cos( ) sen( )
RY =
0 sen( ) cos( )
0
0
0
0
0
cos( )
0
sen( )
0
cos( )
sen( )
0
0
0
0 sen( ) 0
1
0
0
0 cos( ) 0
0
0
1
0
0
(eq. 5.3)
(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:
r
uX
cos( )
xX
1
y
0
sen( ) sen( )
X
=
= R X RY =
z X
0
sen( ) cos( )
1
1
1
(eq. 5.5)
r
u Y
x Y
y
Y
= = R X RY
z Y
1
0
0
1
cos( )
=
0
sen( )
1
1
(eq. 5.6)
r
u Z
xZ
y
Z
= = R X RY
zZ
1
sen( )
0
0
cos( ) sen( )
=
1
cos( ) cos( )
1
1
(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:
( )
r
u x XY =
( x x )2
r
u x XY =
+ y x
(eq. 5.8)
(eq. 5.9)
r
u y XY = cos( )
r
u z XY =
(eq.5.10)
(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)
(eq. 5.13)
Da trigonometria tem-se:
cos2 ( ) + sen 2 ( ) = 1
(eq. 5.14)
(eq. 5.15)
(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:
(eq. 5.17)
8 sen 4 ( ) 9 sen 2 ( ) + 1 = 0
(eq. 5.18)
8x2 9 x + 1 = 0
(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
= 20.705o
sen 2 ( ) = 1 / 7
e
(eq. 5.20)
= 22.208o
(eq. 5.21)
Desta maneira aplicando-se os valores obtidos na equao 5.21, tem-se a seguinte matriz:
R X RY
MP D
0.
0.377964
0.925820
0133631
0.935414 0.327321
.
=
0.353553 0.353553 0.866025
0.
0.
0.
0.
0.377964
0.925820
0133631
0.935414 0.327321
.
=
0.
0.
0.
0.
0.
0.
0
0
0
0
(eq. 5.22)
(eq. 5.23)
A matriz MPD 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:
r
r
r
u x XY = u y XY = u z XY
(eq. 5.24)
Assim, alm da equao 5.13, para a determinao dos ngulos tem-se a seguinte equao:
(eq. 5.25)
(eq. 5.26)
sen 2 ( ) = 1 / 3
sen( ) = 1 / 3 sen( ) = 1 / 2
(eq. 5.27)
= 35.26429 o
(eq. 5.28)
= 45.0o
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:
R X RY
0.
0.707107
0.707107
0.408248 0.816597 0.408248
=
0.577353 0.577345 0.577353
0.
0.
0.
0.
0.707107
0.707107
0.408248 0.816597 0.408248
MP I =
0.
0.
0.
0.
0.
0.
0
0
0
0
(eq. 5.29)
(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:
cos( )
r
uX =
sen( ) sen( )
tan( ) = (sen( ) sen( )) / cos( )
tan( ) = ( 1 / 2 1 / 3 ) / 1 / 2 = 3 / 3
(eq. 5.31)
= 30.0o
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
r
figura 4.7, e a matriz PI contm a descrio dos vetores de seus pontos (fig. 5.3a). O resultado est na figura
5.3b.
r
PI = M I
1
0
1
A
1 0 0
1 1/ 2 0 0 1
0 1 1 0 0
1 1
B C
1 1 1
D E F
0
1/ 2 0
1 1 (eq. 5.32)
1 1
G H
0
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).
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:
Logo:
1
x
0
y
=
0
z
0
1
0 d cos( ) 0 x
x + (( z * d ) cos( ))
y + (( z * d )sen( ))
1 d sen( ) 0 y
0
0
0 z
0
0
0
1 1
1
(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).
MO
0
=
0
0
1
0
0
2 / 2 0
2 / 2 0
0 0
0 1
(eq. 5.34)
r
PO = M O
r
PO =
0
0
1
A
1
0
1
A
1 0 0
1 1/ 2 0 0 1
0
1
1
1
1 0 0
1 1 1
B C
D E F
1 (2 + 2 ) / 2 ( 2 + 2 ) / 2 0 0
0
1/ 2 0
1 1 (eq. 5.35)
1 1
G H
0
2 /2
1 (1 + 2 ) / 2
0
0
2 /2
0
0 1 (1 + 2 ) / 2
0 0
0
1
B
1
D
1 1
E F
1
C
1
G
2 / 2
2 / 2
0 (eq. 5.36)
1
H
MO
0
=
0
0 2 / 2 0
1 2 / 2 0
0
0
0
0
0
1
(eq. 5.33)
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.
r
PO =
0
0
1
A
1 ( 2 2) / 2 ( 2 2) / 2 0 0
1 (1 2 ) / 2
0
0
1
B
2 /2
0
0 1
0 0
1
D
1 1
E F
1
C
2 / 2
(1 2 ) / 2 2 / 2
0
0
1
1
G
H
2 /2
(eq. 5.34)
G
F
B
H
P2
P1
180
P1
P2
6.
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.
1
X
0
Y
=
0
Z
0
H
0
1 0 0
0 1 0
0 1 / k 1
0
y
y
z
z
( z / k ) + 1
1
(eq. 6.3)
x / (( z / k ) + 1)
x
X / H
y / (( z / k ) + 1)
y
Y / H
=
=
z / (( z / k ) + 1)
z
Z / H
1
1
(eq. 6.4)
Y
y
y'
P
x
x'
CP
x at / ((ct / k ) + 1)
y bt / (( ct / k ) + 1)
=
z ct / ((ct / k ) + 1)
1
1
Se t
tem-se
x ka / c
y kb / c
=
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-defuga 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:
a
a
at
b
bt
b
r
r
r
, v2 =
, v3 =
v1 =
ct
c
c
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)
a / (( ct / k ) + 1)
a / (( c / k ) + 1)
at / (( c / k ) + 1)
b / (( ct / k ) + 1)
bt / (( c / k ) + 1)
b / (( c / k ) + 1)
r
, vr =
, vr =
v1 =
c / (( c / k ) + 1) 2 c / (( c / k ) + 1) 3 ct / (( ct / k ) + 1)
1
1
1
B
r
1
v1 =
C1
1
A2
r
v2 =
C2
1
0
0
r
v3 =
k
1
PI
A*
B*
PF
-k
x
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)
u = zc / ( z1 zc )
(eq. 6.8)
x2 = xc zc ( x1 xc ) / ( z1 zc )
(eq. 6.9)
y2 = yc zc ( y1 yc ) / ( z1 zc )
(eq. 6.10)
zc 0
0 z
c
MP =
0
0
0
0
0
yc 0
0 0
1 zc
xc
(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/zc tem-se:
1
0
MP =
0
0 xc / zc 0
1 yc / zc 0
0
0
0
0 1 / zc 1
(eq. 6.12)
1
0
MP =
0
0
1
0
0
0
0
0
0 1 / z c 1
0
(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,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:
( xc / zc) sen( )
sen( ) ( xc / zc) cos( ) cos( )
cos( ) + ( xc / zc) sen( ) cos( )
sen( ) sen( ) + ( yc / zc) sen( ) cos( ) cos( ) ( yc / zc) sen( ) cos( ) sen( ) ( yc / zc) cos( ) cos( )
MPR =
0
0
0
0
0
Supondo-se zc, sen(), sen(), cos(), cos() diferentes de zero, deriva-se os seguintes pontos-de-fuga:
yc + zc(sen( ) / cos( ))
(eq. 6.15)
xc
PFy =
yc zc(cos( ) / sen( ))
(eq. 6.16)
yc + zc(sen( ) / cos( ))
(eq. 6.17)
Assim, utilizando-se a matriz MPR tem-se o controle simultneo do centro de projeo e dos pontos-de-fuga.
Esta matriz pode ser modificada para incorporar rotaes no eixo z.
y
P1
P2
CP
z
7.
Atualmente possvel se encontrar no mercado vrios sistemas CAD bem como modeladores. Como no
possvel se analisar todos estes produtos, optou-se por estudar apenas os recursos de gerao de objetos
tridimensionais no AutoCAD e no 3D Studio, isto em funo da grande popularidade destes produtos. Os
recursos considerados utilizam os conceitos abordados anteriormente.
O AutoCAD permite o trabalho em um sistema de coordenadas tridimensional que pode ser reconfigurado
atravs do comando UCS (User Coordinates System). O sistema de coordenadas inicial denominado de
World Coordinate System e identificado pela letra W no cone de coordenadas (fig. 7.1). Definido um novo
sistema de coordenadas 3D possvel se deslocar a origem do sistema de coordenadas corrente para a origem
do novo (fig. 7.2). Alm disto, possvel se rotacionar no espao o sistema de eixos em relao ao do
sistema anterior (fig. 7.3). A direo do eixo z sempre calculada com base na regra da mo direita.
Manipulando o sistema de coordenadas possvel criar um objeto tridimensional utilizando-se, por exemplo,
um recurso avanado de extruso, o qual permite que, definido um caminho, uma forma seja replicada ao seu
redor (fig. 7.4). Este tipo de recurso exige que a forma e o caminho no estejam contidos no mesmo plano,
assim para defin-los se utiliza o recurso de rotao do sistema de coordenadas.
Outra forma para gerar objetos tridimensionais utilizar operaes booleanas de slidos pr-definidos. Este
recurso foi utilizado para criar o slido da figura 7.5.
Em termos de diferentes forma de visualizao de um objeto, o comando vpoint do AutoCAD permite a
definio de um ponto-de-vista a partir do qual o objeto ser visto segundo uma projeo planar paralela
ortogrfica. O ponto-de-vista define um vetor que parte da origem do sistema de coordenadas corrente e
perpendicular ao plano de projeo (fig. 7.5). O sentido do vetor do plano para o observador (fig. 7.6). Neste
caso, quando vpoint igual a (0,-1,0) o desenho exibido de forma que o eixo y esteja apontando no sentido
contrrio ao do observador e vice-versa quando vpoint igual a (0,1,0).
Alm disto, o AutoCAD fornece uma maneira alternativa para se definir o ponto-de-vista de um objeto.
Considerando-se uma esfera no espao possvel se definir um vetor que vai do centro da esfera at a sua
borda atravs de dois ngulos de rotao. O primeiro medido no plano XY e o segundo no plano XZ. Uma
representao nica para estes dois ngulos pode ser dada atravs de duas circunferncias e um trpode (fig.
7.7), onde deslocamentos circulares em torno do centro do trpode indicam rotaes ao redor da origem dos
eixos no plano XY e deslocamentos do cursor do centro do trpode para a circunferncia mais externa
implica na rotao norte-sul do vetor, ou seja, caracterizam rotaes no plano XZ. As figuras 7.8, 7.9 e 7.10
exemplificam diferentes vistas de rotaes tridimensionais realizadas atravs do comando vpoint e do
tripide.
Observe-se que uma forma mais intuitiva de realizar rotaes o esquema de movimentos horizontais e
verticais do mouse, como o utilizado pelo software de visualizao tridimensional de dados meteorolgicos
VIS-5D. Neste processo, movimentos horizontais ou verticais do mouse indicam rotaes horizontais ou
verticais do objeto, respectivamente. Como as rotaes so sempre realizadas sobre a ltima posio do
objeto, este processo se torna bastante simples e intuitivo.
Figura 7.1
Figura 7.2
Figura 7.3
z
(-1,0,0)
(0,1,0)
(0,-1,0)
(1,0,0)
(0,0,-1)
y
x
(0,1,0)
(0,-1,0)
plo norte
S
z
y
xy
N
+
x
equador
plo sul
(0,0,1)
(1,0,0)
(0,-1,0)
B C
A
(-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)
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
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
8.
TN
Coordenadas
de Mundo
Coordenadas
Normalizadas
TD
TD
Coordenadas
de Dispositivo
y
x
z
x
z
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.
Vrtice
Matriz de
Visualizao
(Modelview)
Transform.
Diviso de
Perspectiva
Matriz de
Projeo
de Viewport
x
y
z
w
Coordenadas
de objeto
Coordenadas
de olho
Coordenadas
de recorte
Coordenadas
normalizadas
de dispositivo
Coordenadas
de janela
(vx,vy,vz)
(cx,cy,cz)
y
(ox,oy,oz)
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.
esquerda
topo
direita
base
perto
longe
ra = largura/altura
y
/2
perto
longe
esquerda
direita
topo
direo do
ponto-de-vista
base
perto
distante
Sem distoro
Com distoro
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 antihorrio ( 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 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
0010
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 prassumido 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