Você está na página 1de 51

Apostila do Curso de Computao Grfica Prof. Dr. Andr Luiz Battaiola (Adaptado por: Prof. Dr.

Jos Hiroki Saito)


Departamento de Computao - DC Universidade Federal de So Carlos - UFSCar Via Washington Luiz, Km. 235 CP. 676 CEP: 13565-905 So Carlos - SP fone: 016-260-8232 // fax: 016-260-8233

ndice
1Conceitos de Computao Grfica ....................................................... 1.1 Conceitos de Aplicativos Grficos ................................................. 1.2 Conceitos de CAD ......................................................................... 1.3 Arquitetura dos Terminas Grficos ................................................ Transformaes Afins ............................................................................... 2.1 Translao ....................................................................................... 2.2 Escalamento .................................................................................... 2.3 Rotao ........................................................................................... 2.4 Espelhamento ................................................................................. 2.5 Rotao em Torno de um Eixo Genrico ....................................... 2.4 Cisalhamento .................................................................................. 2.5 Composio de Transformaes .................................................... Coordenadas Homogneas ....................................................................... Projees Planares .................................................................................... 4.1 Classificao das Projees Planares ............................................. 4.2 Projees Planares Paralelas .......................................................... 4.3) Projees Planares Perspectivas ..................................................... lgebra das Projees Planares Paralelas ................................................. 5.1 lgebra das Projees Planares Ortogrficas ................................ 5.2 lgebra das Projees Planares Ortogrficas Axonomtricas ....... 5.3 lgebra das Projees Planares Oblquas ...................................... lgebra das Projees Planares Perspectivas ........................................... Uso de Projees em Sistema CAD .......................................................... Transformaes e Mapeamento e Coordenadas em Bibliotecas Grficas 8.1 Esquema de Transformaes na Biblioteca Grfica OpenGL ........ 8.1.1. Transformaes de Visualizao e Modelagem ............................. 8.1.2. Transformao de Projeo ............................................................ 8.1.3. Transformao de Viewport ........................................................... 8.1.4. Matrizes de Transformao ........................................................... 8.2 Esquema de Transformaes na Biblioteca Grfica VRML .......... Referncias .......................................................................................................... 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

2-

34-

5.

6. 7. 8.

9.

AGRADECIMENTOS: Aos alunos Elson Ambrsio Barbosa, Renato Alexandre Bolzan de Paula, Rafael Togami, Luciano Pereira Soares e Ana Claudia Stecko Russo dos cursos de Engenharia em Computao e bacharelado em Cincia da Computao do DC/UFSCar pela ajuda na confeco deste texto.

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:
12345Conceituao de computao grfica e reas de aplicao Dispositivos grficos e arquiteturas de terminais grficos Conceituao de aplicativos grficos. Portatilidade, evoluo das bibliotecas grficas e o padro GKS. Algoritmos de transformao de primitivas grficas 3D coordenadas homogneas transformaes: rotao, translao e escalamento projees planares: paralelas e perspectivas Visualizao cientfica e seus principais conceitos: anlise cientfica evoluo das ferramentas grfica ferramentas avanadas de visualizao conceito de eficincia e expressividade grfica tipos de dados cientficos e formas de manipulao pelas ferramentas grficas processamento distribuido e paralelo em visualizao cientfica Curvas: Bezier e Spline Transformaes e recorte em pacotes grficos algortimos de clipping pipeline de transformao

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)

Conceitos de Computao Grfica


A computao grfica pode ser entendida como o conjunto de algoritmos, tcnicas e metodologias para o tratamento e a representao grfica de informaes atravs da criao, armazenamento e manipulao de desenhos, utilizando-se computadores e perifricos grficos. Em termos de aplicao, ela pode ser dividida atualmente nas seguintes reas: CAD Apresentaes Grficas Arte . por Computador Entretenimento Educao e Treinamento Visualizao Cientfica Atualmente a potencialidade da computao grfica est bastante relacionada com a evoluo dos computadores, em termos de hardware e software. Por exemplo, hoje microcomputadores tem performance compatvel com alguns tipos de estaes de trabalho e no mercado se encontram uma grande variedade de dispositivos grficos de alta perfomance, tais como, traadores grficos, mesas digitalizadoras, scanners, mouses, trackballs e impressoras de alta qualidade. Estes fatores tem permitido que os aplicativos grficos aumentem acentuadamente a sua versatilidade, capacidade e performance. Outro fator a se destacar a grande interao da computao grfica com outras reas da cincia (fig. 1.1), caracterizada por uma via de dois sentidos, onde tanto a computao grfica recebe subsdios como fornece.

Fsica Outras ... Matemtica

Computao Grfica

Medicina

Psicologia Eng. Eletrnica

Artes

Figura 1.1: Interao da computao grfica com outras reas. A fsica, por exemplo, forneceu computao grfica todos os conceitos da tica, o que permitiu a elaborao de modelos de cores e de iluminao e preenchimento de areas. A computao grfica por sua vez forneceu fsica as ferramentas de visualizao cientfica que permitem codificar em informao grfica os dados de seus experimentos. A matemtica est presente de forma acentuada em praticamente todas as reas do conhecimento, no entanto, somente para dar um exemplo mais especfico, no caso da computao grfica pode se citar os conceitos de algebra linear e de trigonometria utilizados extensivamente. A retribuio da computao grfica est nas ferramentas de visualizao do comportamento de funes matemticas, por exemplo. Conforme mais detalhado no item 1.5, a medicina deu a computao grfica vrios conceitos importantes relacionados a forma como o olho capta uma imagem. A computao grfica fornece medicina ferramentas de visualizao de partes ou de todo o corpo humano. A psicologia forneceu computao grfica importantes conceitos relacionados a forma de interpretao de uma informao grfica, os quais sero estudados no captulo sobre visualizao

cientfica. A computao grfica deu a psicologia mecanismos para ela explorar mais eficientemente a comunicao visual objetivando, por exemplo, a implementao de ferramentas educacionais. A engenharia eletrnica deu a computao grfica a tecnologia para a produo dos dispositivos grficos. Atravs da computao grfica, a engenharia eletrnica ganhou ferramentas de auxlio para o desenvolvimento de placas de circuito impresso e de pastilhas de circuito integrado.

1.1

Conceitos de Aplicativo Grfico


Uma aplicativo grfico (fig. 1.2) um programa ou um sistema composto de vrios programas que permitem a gerao de uma determinada apresentao grfica que pode ser composta de recursos 2D e/ou 3D e/ou imagem. Atualmente, os aplicativos grficos em geral dispem de recursos de interao homem-mquina que permitem a composio ou a gerao interativa de uma apresentao grfica.

Data Base

Application Program Metafile

Device - Independent Graphics Package

Metafile Reader

Device Driver

Device Driver

Metafile Writer

Virtual Device Interface

Virtual Device Metafile

Current Terminal

Future VDI Terminal

Current Plotter

Figura 1.2: Esquema de um aplicativo grfico Na implementao de um aplicativo grfico trs parmetros so importantes de considerao: 1) Sistema Operacional Isto implica em priorizar o desenvolvimento para estaes de trabalho com sistema operacional UNIX ou microcomputadores com ambiente Windows, OS2, Mac, etc. 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. Sistema de enjanelamento

2)

3)

Em se tratando de ambiente UNIX e com sistema XWindow de enjanelamento, o implementador se depara com dois estilos de interface: Motif e Open View. O Motif, adotado como padro pela OSF (Open Software Foundation), tem sido atualmente bastante considerado pelos implementadores de aplicativos grficos. No caso de microcomputadores, os sistemas de enjanelamento j tem interfaces nicas associadas ao ambientes operacionais Windows, Mac, OS2, etc. Estes conceitos sero analisados novamente no captulo sobre o GKS.

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

Arquiteturas dos Terminais Grficos


No incio do desenvolvimento dos terminais grficos, o modo de operao destes dispositivos era semelhante ao de um osciloscpio, dado que para produzir uma linha, o feixe de eltrons sensibilizava de forma contnua a tela. Devido a persistncia luminosa do material que reveste a tela, a imagem se mantinha ativa at o prximo ciclo de redesenho, e devido a forma de gerao de uma linha na tela, estes terminais foram denominados de terminais vetoriais (fig. 1.3). Dado a deficincia tecnolgica da poca, traduzida pelo alto preo das memrias e sua baixa capacidade de armazenamento, bem como a baixa qualidade dos terminais, esta arquitetura era a mais conveniente devido ao uso pequeno de memria e a simplicidade dos terminais vetoriais. A memria do terminal, denominada de refresh buffer, armazenava comandos simples que indicavam ao controlador de exibio onde traar os segmentos de reta que compunham a imagem total. Os dois maiores problemas desta arquitetura eram: a qualidade ruim das imagens geradas e o fato de que imagens complexas comeavam a piscar devido a baixa taxa de redesenho. A qualidade ruim da imagem advinha do fato de que gerar reas coloridas no era uma operao natural para estes terminais e, usualmente, uma imagem complexa composta de reas coloridas. Uma imagem complexa tambm usualmente composta de vrias primitivas grficas, o que significa uma maior quantidade de elementos para serem armazenados no refresh buffer. Assim, se a taxa de redesenho no for suficientemente alta, a imagem gerada comea a piscar. Paralelamente popularizao da televiso, o que diminuiu o preo dos televisores, e a evoluo da microeletrnica, o que permitiu aumentar a capacidade de armazenamento das memrias e diminuir o seu custo, surgiram os terminais grficos com arquitetura por varredura (raster terminals). Neste caso, o terminal pode ser encarado como uma matriz de pontos que podem estar acesos ou no, para tanto o feixe de eltrons varre a tela horizontalmente em um movimento conjugado com um deslocamento vertical, atingindo os pontos que devem ser acesos (fig. 1.4). O controlador de vdeo controla a

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

Terminal de Vdeo

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

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

Memria do Sistema

Controlador de Vdeo

Monitor

Figura 1.5 - Arquitetura simples.

CPU

Dispositivos Perifricos

BUS

Memria do Sistema

Frame Buffer

Controlador de Vdeo

Monitor

Figura 1.6 - Arquitetura comum.

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 Sistema

Memria do Processador Grfico

Frame Buffer

Controlador de Vdeo

Monitor

Figura 1.7 - Arquitetura com processador grfico.

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
0 0 Pixel -> 67 (x,y) Xmax

Monitor

Pixel exibido em (x,y)

01000011
Red 255 67 Green Blue

1001 1010 0001 100110100001


Look-up Table
Figura 1.8: Operao da Tabela de Cores (LUT).

Figura 1.9: Esquema simplificado do olho humano.

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).

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 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 ey 0

0 0 ez

(eq.2.2)

ex x r v = ey y (eq.2.3) ez z

2.3 Rotao A rotao o giro de um determinado ngulo de um ponto em torno de um ponto de referncia, sem alterao da distncia entre eles. Esta operao aplicada normalmente sobre todos os pontos de uma figura, o que possibilita que ela seja rotacionada. Vrios programas grficos dispem desta operao, sendo que alguns restringem o ngulo de rotao a valores fixos, tais como, 90 e 180. Para o clculo da matriz de rotao, ser considerado inicialmente apenas duas coordenadas, por exemplo, x e y. Assim, na figura 2.3a, o ponto P, de coordenadas (x,y), ser rotacionado de um ngulo em torno do eixo z, at a posio do ponto P (x,y). A linha que une o ponto P a origem do sistema de coordenadas est rotacionada de um ngulo em relao ao eixo x.

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:

x = D cos( )
Da trigonometria tem-se:

(eq. 2.2)

x / = D cos( + ) y / = D sen( + )

(eq. 2.4)

y = D sen( ) (eq. 2.3)

(eq. 2.5) (eq. 2.6) (eq. 2.7)

cos( a + b) = cos(b) cos(a ) sen(b) sen( a ) sin(a + b) = cos(b) sen( a ) + sen(b) cos( a )
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( ) y / = x sen( ) + y cos( )


Em forma matricial, as equaes 2.8 e 2.9 ficam:

(eq. 2.8) (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/ / y = sen( ) cos( ) 0 y (eq. 2.15) 0 z/ 0 1 z x/ cos( ) 0 sen( ) / 1 0 y = 0 z/ sen( ) 0 cos( ) x/ 1 0 0 / y = 0 cos( ) sen( ) z/ 0 sen( ) cos( ) x y (eq. 2.16) z x y (eq. 2.17) z

Rotao em torno do eixo z

Rotao em torno do eixo y

Rotao em torno do eixo x

Fig. 2.4: Rotao em torno do eixo z 2.4 Espelhamento

Fig. 2.5: Rotao em torno do eixo y

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:

tx 2 + c txy sz txz + sy MGR = txy + sz ty 2 + c tyz sx txz sy tyz + sx tz 2 + c

(eq. 2.18)

Onde: x,y,z s = sin() = coordenadas de N c t = cos() = 1- cos()

Fig. 2.6: Rotao em Torno do Eixo x

Fig. 2.7: Espelhamento

y, y*

j N Q

i k

S O z, z* P P*

x, x*

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

1 sh x MTS_1 = (eq.2.19) 0 1

1 sh x MTS_2 = (eq.2.20) 0 e y
(eq.2.21)

1 0 s x MTS_3 = 0 1 s y 0 0 1

y y

x x z z

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.

x z
Figura 2.11.a

x z z

Figura 2.11.b Figura 2.11: Composio de transformaes.

Figura 2.11.c

y y y x x z z z x z z y

x 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 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 r M1 v

(eq. 3.3) (eq. 3.4) (eq. 3.5)

...

A impossibilidade de se inserir a transformao de translao na matriz M no permite que a formulao 3.5 seja usada, assim, necessrio se encontrar um mecanismo que contorne este problema. A soluo usual para este problema a alterao do espao de coordenadas de dimenso 3 para 4, de forma controlada, de maneira que a dimenso da matriz M se altere de 3x3 para 3x4 e, assim, ela possa incorporar a transformao de translao (eq. 3.6). Como inconveniente operar uma matriz no quadrada por no permitir, por exemplo, o clculo da inversa, a matriz MT pode ser novamente modificada pela insero de mais uma linha que no altere o resultado final (eq. 3.7). (eq. 3.6) (eq. 3.7)

x 1 0 0 l y = 0 1 0 m z 0 0 1 n 1

x x+l y y + m = z z+n 1 1

1 0 MT = 0 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 coordenadas homogneas, gera o vetor v * descrito a seguir: Para se calcular o vetor desejado, normaliza-se o 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 1

Neste contexto, uma propriedade interessante e bastante til das coordenadas homogneas se refere a r representao de um ponto no infinito. Assim, considere-se o ponto sobre o eixo x indicado pelo vetor v * e v v:

A 0 r v* = 0 H r r r Em geral, utiliza-se os vetores infinitos x * , y * e z * .

A / H 0 r v = 0 1

Quando H 0 , A / H , logo a aplicao de uma matriz de transformao em coordenadas r homogneas resulta em um ponto no infinito quando o seu vetor posicional for do tipo v * descrito a seguir.

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: produz escalamento global produz translao

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

Figura 4.1: Diferentes tipos de projees


Proj. Planares Paralelas
Ortogrficas Planta V. Frontal V. Lateral Axonomtricas Isomtricas Dimtricas Trimtricas Oblquas Cabinet Cavalier

Perspectivas
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.

C. de Projeo no Infinito

A A B A B
C. de Projeo no Finito

B B

Raios Projetores

Figura 4.3: Centros de projees r r

r r
r N

r N

Figura 4.4: Direo da normal ao plano e dos raios projetores.

Planta Vista Lateral

Vista Frontal

Figura 4.5: Projees ortogrficas planta, vista lateral e frontal.

Figura 4.6: Projees ortogrficas axonomtricas.

Dimtrica x y z

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.

z p RP

z l_A A

l_B l_B l_A CP CP pf pXY RP2 pf RP1 pXY

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 CP

pf_1

pXY

Figura 4.12: Projeo perspectiva de linhas inclinadas em relao ao plano de projeo.

z C,D A,B E,F G,H PF_1 PF_2 y

CP C E G F H A

B y x

Fig. 4.13: Projeo perspectiva de um cubo com lados paralelos ao eixo 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 MPvl (eq. 5.2).

RX

0 0 1 0 cos( ) sen( ) = 0 sen( ) cos( ) 0 0 0 1 0 = 0 0 0 0 0 0 1 0 0 0 0 0 0 1

0 0 0 1

(eq. 5.1)

Sendo = -90 e considerando-se a projeo no eixo xy, a matriz fica:

MP

VL

(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).

RX

0 0 1 0 cos( ) sen( ) RY = 0 sen( ) cos( ) 0 0 0

0 0 0 1

cos( ) 0 sen( ) 0

0 sen( ) 0 1 0 0 0 cos( ) 0 0 0 1 0 0 0 1

(eq. 5.3)

RX

0 cos( ) sen( ) sen( ) sen( ) cos( ) cos( ) sen( ) RY = sen( ) cos( ) sen( ) cos( ) cos( ) 0 0 0

(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 x Y y Y = = R X RY z Y 1 xZ y Z = = R X RY zZ 1 0 0 1 cos( ) = 0 sen( ) 1 1 sen( ) 0 0 cos( ) sen( ) = 1 cos( ) cos( ) 1 1

(eq. 5.5)

r u Y

(eq. 5.6)

r u Z

(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 = r u x XY =

( x x )2

+ y x

( )

(eq. 5.8) (eq. 5.9)

cos2 ( ) + (sen2 ( ) sen 2 ( ))

Similarmente, para os versores sobre os eixos y e z tem-se:

r u y XY = cos( ) r u z XY = (sen 2 ( ) + cos2 ( ) sen 2 ( )

(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 cos2 ( ) + sen 2 ( ) sen 2 ( ) = cos2 ( )


Da trigonometria tem-se:

(eq. 5.12) (eq. 5.13)

cos2 ( ) + sen 2 ( ) = 1
Aplicando-se esta relao na equao 5.13, tem-se:

(eq. 5.14)

sen 2 ( ) sen 2 ( ) = sen 2 ( ) sen 2 ( ) sen 2 ( ) = sen 2 ( ) / (1 sen 2 ( ))

(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:

sen 2 ( ) + cos2 ( ) sen 2 ( ) = (1 / 2) 8 sen 4 ( ) 9 sen 2 ( ) + 1 = 0


Fazendo-se sen ( ) = x , tem-se:
2

(eq. 5.17)

Aplicando-se a equao 5.16 e rearranjando, tem-se: (eq. 5.18)

(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:

8x2 9 x + 1 = 0

sen 2 ( ) = 1 / 8

sen 2 ( ) = 1 / 7
e

(eq. 5.20) (eq. 5.21)

= 20.705o

= 22.208o 0 0 0 1

Desta maneira aplicando-se os valores obtidos na equao 5.21, tem-se a seguinte matriz:

R X RY

0. 0.377964 0.925820 0133631 0.935414 0.327321 . = 0.353553 0.353553 0.866025 0. 0. 0. 0 0 0 1

(eq. 5.22)

MP D

0. 0.377964 0.925820 0133631 0.935414 0.327321 . = 0. 0. 0. 0. 0. 0.

(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 sen 2 ( ) + cos2 ( ) sen 2 ( ) = cos2 ( ) sen 2 ( ) = (1 2 sen 2 ( )) / (1 sen 2 ( )) sen 2 ( ) = 1 2 sen 2 ( )

(eq. 5.24)

Assim, alm da equao 5.13, para a determinao dos ngulos tem-se a seguinte equao: (eq. 5.25)

Similarmente a equao 5.16, derivada da 5.12, podemos derivar da 5.25 a equao: (eq. 5.26)

sen 2 ( ) = 1 / 3

sen( ) = 1 / 3 sen( ) = 1 / 2 = 35.26429 o


e

(eq. 5.27) (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 0 1

0 0 0 1

(eq. 5.29)

0. 0.707107 0.707107 0.408248 0.816597 0.408248 MP I = 0. 0. 0. 0. 0. 0.

(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.

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.

r PI = M I

1 0 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

Uma considerao importante sobre projees isomtricas se refere ao fato que:

sen 2 ( ) = 1 / 3 sen 2 ( ) = 1 / 2

= 35.26o = 45.00o

ou ou

= 144.74 o = 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:

P1 = (0,0, z1 ) P1 = (d cos( ), d sen( )) P2 = (0,0, z2 ) P2 = (( z2 / z1 ) * d ) cos( ),(( z2 / z1 ) * d ) sen( ))


A generalizao da formulao para qualquer ponto pode tambm ser feita facilmente observando-se a figura 5.5. Assim, supondo-se z1 igual a 1 e z2 igual a z, tem-se:

P2 = (0,b, z ) P 2 = ( z * d cos( ), b + ( z * d ) sen( )) P3 = (a ,0, z ) P3 = (a + ( z * d ) cos( ),( z * d ) sen( ))

Logo:

1 x 0 y = 0 z 0 1

0 d cos( ) 0 x x + (( z * d ) cos( )) y + (( z * d )sen( )) y 1 d sen( ) 0 = 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

1 0 = 0 0

0 1 0 0

2 / 2 0 2 / 2 0 0 0 0 1

(eq. 5.34)

Figura 5.4: Esquema de projeo oblqua. Aplicando-se MO sobre o objeto definido na fig. 5.3a, tem-se:

r PO = M O

1 0 0 1 A

1 0 1

1 1 1

1 0 0 1 0 0 1 1 1 D E F

1 1/ 2 0 0 1

B C

0 1/ 2 0 1 1 (eq. 5.35) 1 1 G H 0 2 /2 2 / 2 2 / 2 0 (eq. 5.36) 1 H

r PO =

1 0 0 1 A

1 (2 + 2 ) / 2 ( 2 + 2 ) / 2 0 0 1 (1 + 2 ) / 2 0 0 1 B 1 C 2 /2 0 1 D

0 1 (1 + 2 ) / 2 0 0 0 1 1 E F 1 G

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:

MO

1 0 = 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 =

1 0 0 1 A

1 ( 2 2) / 2 ( 2 2) / 2 0 0 1 (1 2 ) / 2 0 0 1 B 1 C 2 /2 0 1 D
(eq. 5.34)

0 1 0 0 1 1 E F

2 / 2 (1 2 ) / 2 2 / 2 0 0 1 1 G H 2 /2

G F B H

Figura 5.6: Objeto e sua projeo oblqua cavalier com =45.

P2 180 P1

P1 P2

Figura 5.7: Rotao da projeo de 180.0

F E G H C D

Figura 5.8: Objeto e sua projeo oblqua cavalier com =(180+45).

6.

lgebra das Projees Planares Perspectivas

Para uma deduo simples e intuitiva da lgebra das projees perspectivas interessante se analisar a figura 6.1. Neste caso, o ponto P (x,y,z) projetado no ponto P (x,y,0), contido no plano xy, a partir de um centro de projeo localizado no ponto C (0,0,k). Aplicando-se semelhana de tringulos a figura produzida e considerando que a coordenada z tem valor negativo obtm-se:

x / k = x / ( z + k ) x = x / (( z / k ) + 1) y / k = y / ( z + k ) y = y / (( z / k ) + 1) 1 X 0 Y = 0 Z 0 H 0 1 0 0 0 1 0 0 1 / k 1 0 0 x x y y = z z ( z / k ) + 1 1

(eq. 6.1) (eq. 6.2)

Note-se que estes valores so os mesmos produzidos pela matriz de transformao abaixo.

(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 1

(eq. 6.4)

Y
y y' P z x

x'

CP

Figura 6.1: Projeo de um ponto no plano a partir de um centro de projeo. Quando se adota o plano xy como o plano de projeo, desconsidera-se o valor de z na equao 6.4. Note-se que nesta equao se k , ento x x e y y , o que origina uma projeo paralela, com raios projetores perpendiculares ao plano xy, considerado como o plano de projeo. Considerando-se x = at, y = bt e z = -ct, com a, b, e c maiores do que zero, tem-se:

x at / ((ct / k ) + 1) y bt / (( ct / k ) + 1) = z ct / ((ct / k ) + 1) 1 1 x ka / c y kb / c = z k 1 1

Se t

tem-se

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:

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 a at b bt b r r r , v = , v = v1 = 2 3 ct c c 1 1 1

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 r r , v = , v = v1 = c / (( c / k ) + 1) 2 c / (( c / k ) + 1) 3 ct / (( ct / k ) + 1) 1 1 1 E quando t resulta em:

B r 1 v1 = C1 1

A2 r v2 = C2 1

0 0 r v3 = k 1

Mesmo sendo B1, C1, A2 e C2 constantes finitas, v1 e v2 , que so respectivamente a transformao r r perspectiva de v1 e v2 , resultam em pontos que no espao tendem a infinito, ou seja, no h pontos-de-fuga r r associados as linhas paralelas aos eixos x e y. Este resultado esperado, pois v1 e v2 definem linhas r perpendiculares ao eixo z que contm o centro-de-projeo. A transformao perspectiva de v3 resulta em r um ponto finito no espao, ou seja, h ponto-de-fuga pois v3 perpendicular ao eixo z que contm o centro de projeo.
B A y PI A* B* B -k x z k 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 r convergncia dos pontos transformados para o ponto-de-fuga. Para t=0, v3 resulta no ponto PI (a, b, 0), que o ponto que a linha AB estendida intercepta o plano. Os pontos A* e B* esto na linha PI-PF e, assim, quando B, B*PF e B(0,0), o que faz com que todos os pontos projetados no plano estejam na linha limitada pelos pontos (a,b) e (0,0). Em especial, observando a figura 6.2 e as equaes 6.5, 6.6 e 6.7 compreende-se o mecanismo de funcionamento da transformao perspectiva. O surgimento do ponto-de-fuga no eixo z se deve ao fato de que na equao 6.7 o denominador tende a infinito quando t e, assim, as constantes divididas por um valor infinito resultam em zero e o valor infinito do numerador dividido pelo valor infinito do denominador resulta em um valor finito. Em termos de computao grfica, o foco de interesse a projeo de um ponto no espao sobre o plano da tela. Neste sentido, para ilustrar uma forma mais intuitiva de se obter as equaes anteriores, ser deduzido a matriz de projeo perspectiva a partir da considerao de que a tela do computador est sobre o plano xy e que o centro de projeo (observador) est fora deste plano e em alguma parte positiva do eixo z (fig. 6.3). Supondo-se conhecido P1 e CP (fig. 6.3), pode-se escrever a equao de reta que passa por estes dois pontos. No caso bidimensional, a equao da reta em funo dos pontos pA (xa,ya) e pB (xb,yb) fica:

x = xa + ( xb xa )u y = ya + ( yb ya )u
Assim, no caso da figura 6.5 tem-se:

x = xc + ( x1 xc )u y = yc + ( y1 yc )u z = zc + ( z1 zc )u
Logo, o valor de u para P2, com coordenadas (x2,y2,0), :

(eq. 6.5) (eq. 6.6) (eq. 6.7) (eq. 6.8) (eq. 6.9) (eq. 6.10)

u = zc / ( z1 zc )
Compondo-se as equaes 6.5, 6.6 e 6.8 tem-se:

x2 = xc zc ( x1 xc ) / ( z1 zc ) y2 = yc zc ( y1 yc ) / ( z1 zc )
Escrevendo-se este resultado em forma matricial tem-se:

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

0 xc / zc 0 1 yc / zc 0 0 0 0 0 1 / zc 1

(eq. 6.12)

Considerando-se xc e yc iguais a zero na MP da equao 6.12, tem-se:

1 0 MP = 0 0

0 1 0 0 0 0 0 0 1 / z c 1 0 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 (1 / zc) sen( ) cos( ) ( 1 / zc) sen( ) ( 1 / zc ) cos( ) cos( ) 0 0 0 1

Supondo-se zc, sen(), sen(), cos(), cos() diferentes de zero, deriva-se os seguintes pontos-de-fuga:

xc + zc(cos( ) / (sen( ) cos( ))) PFx = yc + zc(sen( ) / cos( )) xc PFy = yc zc(cos( ) / sen( )) xc zc(sen( ) / (cos( ) cos( ))) PFz = yc + zc(sen( ) / cos( ))

(eq. 6.15)

(eq. 6.16)

(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

Figura 6.3: Centro de projeo genrico.

7.

Uso de Projees em Sistemas CAD e Modeladores

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

Figura 7.1: Sistema de coordenadas no AutoCAD (UCS). Figura 7.2: Mudana de origem dos eixos. Figura 7.3: Rotao dos eixos.

Figura 7.4: Processo de extruso no AutoCAD.


(0,0,1) (0,1,0)

z (-1,0,0)

(0,-1,0) (0,0,-1)

(1,0,0)

Figura 7.5: Diferentes especificaes de ponto-de-vista (vpoint).

z x y z z

y x

X
(0,1,0) (0,-1,0)

Figura 7.6: Especificaes do ponto-de-vista em relao ao eixo y.

plo norte S

z y

N +

xy

x equador plo sul

Figura 7.7: Esquema interativo de especificao de ponto-de-vista.

(0,0,1) (0,-1,0) B C A
Figura 7.8: Especificaes de ponto-de-vista para planta, vista lateral e frontal.

(1,0,0)

(-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).
Seo Transversal Fit X - Forma Vista Superior

Fit Y - Forma Vista Lateral

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.

TN

Coordenadas de Mundo

Coordenadas Normalizadas

TD
Coordenadas de Dispositivo

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 Figura 8.2.b: Posicionando o volume de visualizao no mundo. cmera.

Figura 8.2.c: Posicionando o objeto (modelo). Figura 8.2.d: Posicionando modelo no mundo.

Figura 8.2.e: Ajustando a lente para Figura 8.2.f: Determinando a forma o enquadramento. do volume de visualizao.

Figura 8.2.g: Fotografia

Figura 8.2.h: Viewport

y
x z

x z

Figura 8.3.a: Translao do objeto.

Figura 8.3.b: Translao do pontode-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.

Vrtice

Matriz de Visualizao (Modelview)

Matriz de Projeo

Diviso de Perspectiva

Transform. de Viewport

x y z w
Coordenadas de objeto Coordenadas de olho Coordenadas de recorte Coordenadas de janela

Coordenadas normalizadas de dispositivo

Figura 8.4: Esquema de transformao de coordenadas na OpenGL.

(vx,vy,vz)

(cx,cy,cz)

y
(ox,oy,oz)

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.

esquerda

topo

direita

base perto longe

Figura 8.6: Definio do volume de visualizao.

ra = largura/altura
y

/2

perto longe

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.

esquerda

topo

direita

direo do ponto-de-vista

base perto distante

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 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 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 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

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, McGrawHill, 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

Você também pode gostar