Computao Grfica Modelagem Geomtrica Profa. Mercedes Gonzales Mrquez

Computao Grfica  Modelagem Geomtrica Profa. Mercedes Gonzales Mrquez

Computao Grfica Modelagem Geomtrica Profa. Mercedes Gonzales Mrquez Tpicos Curvas

Superfcies Tcnicas principais de Modelagem Geomtrica Curvas e Superfcies - Introduo Estuda-se dentro do escopo da Modelagem Geomtrica. Curvas so a base, tanto da gerao de formas simples, como crculos e elipses, quanto na criao de projetos complexos como automveis, navios, aeronaves ou at

mesmo faces e corpos humanos. Introduo Curvas e superfcies desempenham um papel importante em vrias reas, como criao de objetos e visualizao de fenmenos cientficos. Com frequncia representamos uma curva como uma

sucesso de linhas retas. Em outras aplicaes mais complexas escolhemos um conjunto de pontos de controle e definimos uma curva que passe por eles. Representao de Curvas A representao analtica de curvas pode usar ou no parmetros, sendo classificados como B.1. paramtricas B.2. no-paramtricas

As formas no-paramtricas podem ser, ainda, B.2.1. explcitas B.2.2. implcitas. Representao de Curvas B.1 Formas paramtricas As coordenadas so dadas em termos de um (conjunto) de parmetros. Usa-se um parmetro (t, , etc.) para

definir as coordenadas dos pontos da curva. P(t) = (x(t), y(t)) Exemplos: Representao de Curvas B.1 Formas paramtricas P(t) = (x(t), y(t)) Exemplos: Representao de Curvas

B.1. Formas paramtricas P(t) = (x(t), y(t)) Exemplos: Representao de Curvas B.2. Formas no-paramtricas No h parmetros e uma coordenada da curva dada em funo da outra, ou seja y = f(x) ou x = f(y) Exemplos: 1) Equao de um semi-crculo de raio 2

y 22 x 2 ou x 22 y 2 2) Equao de uma reta y = 2x 1 ou x = (y + 1) Representao de Curvas

B.2.1 Forma no-paramtrica explcita : dada por uma equao do tipo y = f(x), ou seja uma das coordenadas explicitamente dada em funo das outras. Exemplos: 1) Equao genrica explcita de uma parbola: y = ax2 + bx + c 2) Equao de uma reta y = mx + b 3) Polinmios: P(x) = anxn + an-1xn-1 + ... + a2x2 + a1x1 + a0

Representao de Curvas Obtm-se dado. um valor de y para cada valor de x Representao de Curvas B.2.2. A Forma no-paramtrica implcita no tem essa limitao. Nela as coordenadas

so relacionadas por uma funo. A sua forma f(x,y)=0 ou f(x,y,z)=0. Exemplo: x2 + y2 = R2, f(x,y)= x2 + y2 - R2= 0 Representao de Curvas Exemplo:

sees cnicas. ax2 + bxy + cy2 + dx + ey + f = 0 Essa expresso representa a variedade de curvas planas denominadas sees cnicas. Essas curvas (cinco) so obtidas pelo corte de um cone por um plano, resultando em: crculo, elipse, parbola, hiprbole, reta. Representao de Curvas Representao de Curvas

Cnica Forma Paramtrica Forma Implcita Elipse x = a cos y = b sen

x2 y2 2 1 0 2 a b Parbola x = at2, y = 2at y2 4ax = 0

Hiprbole x = a cosh y = b senh 2 2 x

y 2 1 0 2 a b Exerccio Veja programas circle.cpp, parabola.cpp, helix.cpp Curvas de Bzier

uma tcnica de aproximao de curvas. Uma curva de Bzier pode ser gerada por 3, 4, at n + 1 pontos de controle (ajuste para um polinmio de grau n). Geralmente utiliza-se quatro pontos de controle (forma cbica).

A curva passa pelo primeiro e pelo ltimo ponto de controle. Curvas de Bzier B2 B1 B3 B0

Figura 1 Curvas de Bzier A curva paramtrica de Bzier definida como: n P(t ) Bi J n ,i (t ), 0 t 1

i 0 Onde Bi representa cada um dos n+1 pontos de controle considerados e Jn,i (t) so as funes que combinam a influncia de todos os pontos (blending functions). Essas funes so descritas pelos polinmios de Bernstein como: n i

J n ,i (t ) t (1 t ) n i i Curvas de Bzier onde n o grau dos polinmios e: n n! i i!( n i )! (i = 0, 1, ..., n) so os coeficientes binomiais.

Essas funes Jn,i (t) devem satisfazer as condies: Jn,i (t) 0 para todo i entre 0 e 1, isto 0 t 1 e tambm: n J i 0 n ,i

(t ) 1, 0 t 1 Curvas de Bzier Expresses que definem as curvas de Bzier: Para trs pontos de controle polinmios com grau 2. P(t) = (1 t)2 B0 + 2t (1 t) B1 + t2B2,

onde t inicialmente 0. P(t ) [t 2 1 2 1 B0 t 1] 2 2 0 B1 1 0 0 B2 Curvas de Bzier

Expresses que definem as curvas de Bzier: Para quatro pontos de controle polinmios com grau 3. P(t) = (1 t)3 B0 + 3t (1 t)2 B1 + 3t2 (1 t)B2 + t3B3, onde t inicialmente 0. P(t ) t 3 t 2 1 3 3

3 6 3 t 1 3 3 0 0 0 1

1 B0 3 B1 0 B2 0 B3 Curvas de Bzier - Algoritmo

Material auxiliar para melhor entendimento de curvas e superfcies de Bzier, veja applets java em http://www.dca.fee.unicamp.br/courses/EA978/1s20 03/demos/geometry.html Exerccio: Faa um programa que dado um nmero n, permita o ingresso interativo (pelo cliques do mouse) de n+1 pontos de controle e construa a curva de Bzier correspondente. Preste ateno que as coordenadas da cena diferem ligeiramente das coordenadas da tela onde os cliques sero feitos.

Curvas de Bzier - Problemas 1. 2. Falta de controle local : Uma alterao em um ponto no polgono de Bzier acarreta alteraes em toda a curva de Bzier. Indesejvel quando desejamos fazer ajustes finos.

O grau do polinmio cresce com o nmero de pontos de controle do polgono de controle. Superfcies Bzier - Generalizao da idia de curva de Bzier. - Sejam Bij, i=0,...,m, j=0,...,n, um conjunto de pontos no R3 de tal forma que sua projeo no plano x0y seja formada pelos vrtices de mn retngulos de mesmas dimenses. A superfcie de Bzier definida no domnio [0,1]x[0,1] n

Q( u, v ) i 0 m B J ij ni ( u) K mj (v )

j 0 Onde Jni e Kmj so os polinmios de Bernstein. Superfcies Bzier Curvas e Superfcies Bzier em OpenGL 1. 2.

Leia e entenda os programas bezierCurves.cpp e bezierCurveWithEvalMesh.cpp que desenham curvas de Bzier usando comandos de OpenGL. Explique os comandos que geram as curvas em ambos programas. Leia e entenda os programas bezierSurface.cpp e bezierCanoe.cpp que desenham superfcies de Bzier usando comandos de OpenGL. Explique os comandos que geram as superfcies em ambos programas. Modelagem de Slidos

Instanciamento de primitivas A partir de um conjunto de formatos slidos primitivos, possvel gerar uma famlia de slidos que variam em relao a alguns parmetros. Instanciamento de primitivas No -

OpenGL pode-se usar como primitivas: Primitivas da GLUT Primitivas qudricas da GLU Primitivas da GLUT A biblioteca GLUT oferece uma coleo de objetos disponveis em modo slido e aramado. void glutWireSphere(GLdouble radius, GLint slices, GLint stacks); void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);

void glutWireCube(GLdouble size); void glutSolidCube(GLdouble size); void glutWireCone(GLdouble radius, GLdouble height, GLint slices,GLint stacks); void glutSolidCone(idem); void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius,GLint nsides, GLint rings); void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius,GLint nsides, GLint rings); Primitivas da GLUT

void glutWireDodecahedron(GLdouble radius); void glutSolidDodecahedron(GLdouble radius); void glutWireOctahedron(void); void glutSolidOctahedron(void); void glutWireTetrahedron(void); void glutSolidTetrahedron(void); void glutWireIcosahedron(void); void glutSolidIcosahedron(void); void glutWireTeapot(GLdouble size);

void glutSolidTeapot(GLdouble size); Veja e rode o programa glutObjects.cpp da pasta Code Qudricas da GLU A biblioteca GLU prov a renderizao automtica de objetos tridimensionais como esferas, cilindros e discos. Esferas: gluSphere(GLUquadricObj *obj, GLdouble radius, GLint slices, Glint stacks) Cilindros: gluCylinder(GLUquadricObj *obj, GLdouble baseRadius, Gldouble topRadius, GLdouble height, GLint slices, GLint stacks)

topRadius == zero, permite criar cone. Discos: gluDisk(GLUquadricObj *obj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops) innerRadius != zero, permite criar discos com furos. Veja e rode o programa gluQuadrics.cpp da pasta Code Superfcies Bzier em OpenGL Leia e entenda o programa torpedo.cpp que desenha um torpedo composto de diferentes pedaos: (i) Corpo: cilindro da GLU

(ii) Nariz: hemisferio (iii) Trs barbatanas: discos parciais da GLU (iv) Disco traseiro : disco da GLU (v) Haste da hlice: cilindro da GLU (vi) Trs ps da hlice: pedaos bicbicos Bezier 2. Desenhe um avio composto de vrios pedaos. Use superfcies de Bzier e qudricas. 1. Superfcies Bzier e qudricas em OpenGL 3. Modele os seguintes objetos.

Superfcies Bzier em OpenGL 4. Modele os seguintes objetos: carro, vestido, peixe, violo, cadeira com uso de superfcies de Bzier. Representao Octree: (estrutura de rvore) Envolve o objeto por um cubo que em seguida subdividido em 8 cubos menores. Cada um deles pode ser : Cheio, vazio ou cheio-vazio. Os ns cheios ou vazios so terminais, enquanto os cheio-vazios no so.

Representao Octree: Exemplo Representao Octree: Exemplo Geometria Slida Construtiva (CSG) Consiste em construir um objeto a partir da combinao operatria (unio, interseo e diferena) de dois ou mas slidos.

Geometria Slida Construtiva (CSG) Geometria Slida Construtiva (CSG) Varredura (Sweeping) Uma superfcie descrita quando uma curva C1 (curva geratriz) deslocada no espao, ao longo de uma trajetria dada por uma outra curva C2 (caminho o diretriz).

- Varredura translacional (Extruso ou superfcies geradas por deslocamento) Varredura (Sweeping) Varredura (Sweeping) - Varredura rotacional (ou superfcies de revoluo) Varredura (Sweeping) - Varredura rotacional (ou superfcies de revoluo)

Varredura (Sweeping) Superfcie de Revoluo - Tarefa O executvel swprj.exe permite desenhar uma curva geratriz que dar origem a uma superfcie de revoluo O programa torus.c (disponvel no site da disciplina) desenha a superfcie de revoluo chamada torus.

O programa superfcies.cpp permite desenhar uma curva de Bzier como curva geratriz e a partir dela obter uma superfcie de revoluo. (1) Veja que a superfcie em superfcies.cpp representada apenas por cortes horizontais, como voc representaria ela por polgonos (quadrilteros ou tringulos)? Superfcie de Revoluo - Tarefa (2) Compare o programa torus.cpp da pasta Code com o programa torus.c disponibilizado no site da disciplina. Para consulta de comandos novos use o livro RedBook

disponibilizado tambm no site da disciplina. (3) Desenhar um cilindro como superfcie de revoluo usando um segmento de reta como curva geratriz. Malha de Polgonos - Colees de polgonos (ou faces) que, juntos, formam a pele ou casca do objeto Forma rpida e prtica para representar objetos Estrutura de Dados . Lista contgua das coordenadas de todos os vrtices que compem cada face.

- Arestas implcitas - Faces explcitas Malha de Polgonos

Recently Viewed Presentations