A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Computação Gráfica Módulo III – Geometria

Apresentações semelhantes


Apresentação em tema: "Computação Gráfica Módulo III – Geometria"— Transcrição da apresentação:

1 Computação Gráfica Módulo III – Geometria
UniverCidade - Prof. Ismael H F Santos April 05 Prof. Ismael H. F. Santos

2 Considerações Gerais Objetivo: Discutir os principais conceitos eos princípios básicos dos Sistemas Gráficos e a Programação em OpenGL. A quem se destina : Alunos e Profissionais que desejem aprofundar seus conhecimentos sobre Computação Grafica e suas aplicações. April 05 Prof. Ismael H. F. Santos

3 Bibliografia http://www.lcg.ufrj.br/compgraf1/downloads/apostila.ps.gz
Computação Gráfica Volume 1. Jonas Gomes e Luiz Velho. Instituto de Matemática Pura e Aplicada – IMPA. Introdução a Computação Gráfica - Paulo Roma Notas do Curso ministrado na Universidade de Maryland pelo Prof. David Mount ftp://ftp.cs.umd.edu/pub/faculty/mount/427/427lects.ps.gz Apostila Fundamentos da Imagem Digital – Antonio Scuri Computer Graphics: Principles and Practice, Second Edition. James Foley, Andries van Dam, Steven Feiner, John Hughes. Addison-Wesley. OpenGL Programming Guide, 2nd Edition. Mason Woo, Jackie Neider, Tom Davis. Addison Wesley. April 05 Prof. Ismael H. F. Santos

4 Bibliografia OpenGL OpenGL® Programming Guide, 2nd Edition. Mason Woo, Jackie Neider, Tom Davis. Addison Wesley. Manual de referência online Sítio oficial do OpenGL April 05 Prof. Ismael H. F. Santos

5 Ementa Introdução ao OpenGL Exemplos de Transformações 2D
Geometria Exemplos de Transformações 2D Fórmulas e cálculos das transformações 2D Usando matriz de transformação (por que?) Coordenadas Homogêneas Concatenação de transformações Transformações 3D Projeções Histórico April 05 Prof. Ismael H. F. Santos

6 Paradigma dos 4 universos
CG – CO023 Paradigma dos 4 universos April 05 Prof. Ismael H. F. Santos

7 Transformações Geométricas
April 05 Prof. Ismael H. F. Santos

8 Transformações Geométricas
CG – CO023 Transformações Geométricas April 05 Prof. Ismael H. F. Santos

9 Exemplos de Transformações 2D
Translação Escala uniforme não uniforme Rebatimento por um eixo (espelhamento) Troca de eixos Rotação pela origem April 05 Prof. Ismael H. F. Santos

10 Translação Translation of a point is simply vector addition y -2 -1 P1
P2 = P1 + P2 1 2 3 -2 -1 = + x April 05 Prof. Ismael H. F. Santos

11 Escala Scaling about the origin is scalar multiplication y 2 1 = 2 *
P2 = P1 * 2 x April 05 Prof. Ismael H. F. Santos

12 Rebatimento por um eixo (espelhamento)
x = x y = -y April 05 Prof. Ismael H. F. Santos

13 Troca de Eixos x = y y = x April 05
Prof. Ismael H. F. Santos

14 Rotação pela Origem y x P´ P x´ y´ x´ = x.cos q - y.sen q
y´ = x.sen q + y.cos q April 05 Prof. Ismael H. F. Santos

15 Por que usar Matriz nas Transformações?
Todas as transformações podem ser efetuadas através da multiplicação de matrizes (usando coordenadas homogêneas). As transformações podem ser aninhadas e resolvidas de modo a haver apenas uma matriz de multiplicação a ser aplicada. A característica descrita acima se torna muito importante quando a mesma seqüência de transformações deve ser aplicada para diversos pontos. April 05 Prof. Ismael H. F. Santos

16 Multiplicação de Matrizes
= é ë ê ù û ú a b c d x y x’ y’ onde: + a x b y x’ = + c x d y y’ = April 05 Prof. Ismael H. F. Santos

17 Uniform Scaling , ù û ú = S é ë ê s = P é ë ê ù û ú x y , = M S P = é
= P é ë ê ù û ú x y , = M S P = é ë ê ù û ú s x y , = I é ë ê ù û ú 1 = M s é ë ê ù û ú x y M = s I P , April 05 Prof. Ismael H. F. Santos

18 Non-uniform Scaling = S é ë ê ù û ú s = P é ë ê ù û ú x y é s ù é s x
1 2 = P é ë ê ù û ú x y é s ù é s x ù é x ù ê 1 ú ê 1 ú ê ê ú ê ú ú = ê ú ê ú ê ú s ë y û s y ë û ë û 2 2 Note orientation shift in line April 05 Prof. Ismael H. F. Santos

19 Non-uniform Scaling y x P P´ Redução (0< sx <1) ,
Aumento (sy >1) x y P = x = sx x y = sy April 05 Prof. Ismael H. F. Santos

20 = é ë ê ù û ú x - y 1 -1 Flip an Axis...
-1 What does this do to appearance of objects? April 05 Prof. Ismael H. F. Santos

21 = é ë ê ù û ú y x 1 Swap Axes April 05
1 April 05 Prof. Ismael H. F. Santos

22 Rotate by  , = M R P é ë ê ù û ú ( ) cos q - sin x y = é ë ê ù û ú -
+ April 05 Prof. Ismael H. F. Santos

23 Transformações Geométricas (Translação)
y P’ x’ x y tx ty P’ = = + y’ tx ty P t = x x y ? ? Não pode ser escrito na forma = ? ? 1 x y tx ty Ruim para implementação = + 1 April 05 Prof. Ismael H. F. Santos

24 Vantagens das coordenadas homogêneas (Translação)
w y t x w=1 yh x’ y’ 1 1 tx ty x y 1 x’ y’ P’ = = = xh [T] Matriz de Translação April 05 Prof. Ismael H. F. Santos

25 Coordenadas homogêneas
y x y 1 wx wy w xh yh w x y = D = D P = = P x x = xh /w w>0 y = yh /w yh xh w w=1 x y Ex.: 3 2 1 6 4 2 9 6 3 3 2 = D = D = April 05 Prof. Ismael H. F. Santos

26 Vantagens das coordenadas homogêneas (pontos no infinito)
w H1 w 2 3 u = y w=1 C1 H2 = C2 C3 x u H3 w=1 yh uh H1 H2 H3 H4 uh xh 2 3 2 3 1 2 3 1/2 2 3 1/4 2 3 . . . 2 3 = ? C1 C2 C3 C4 infinito na direção (2,3) 1 1.5 2 3 4 6 8 12 April 05 Prof. Ismael H. F. Santos

27 Vantagens das coordenadas homogêneas (pontos no infinito, exemplo)
3 1 -2 A B C D x y O 1 -1 2 A’ B’ C’ D’ x y O’ infinito -1 1 2 3 1 -2 1 1 3 1 -2 2 1 4 2 2 1 J J = = = 3 1 -2 1 1 3 1 -2 2 4 2 -1 = -1 J -2 = -2 J = -1 1 1 1 2 1 April 05 Prof. Ismael H. F. Santos

28 Efeito de profundidade
x x y y April 05 Prof. Ismael H. F. Santos

29 Simplificação da projeção cônica
Projeção ortográfica eye plano de projeção direção de projeção April 05 Prof. Ismael H. F. Santos plano de projeção

30 Concatenação a a x y x0 y0 y y0 x0 x y y x x April 05
Prof. Ismael H. F. Santos

31 Concatenação de Transformações
x y x y T1 x y x y T2 x y R1 x y R2 E P’= T2 R2 E R1 T1 P April 05 Prof. Ismael H. F. Santos

32 Composição com sistema local/móvel
X2 Y2 Y X X Y P2 X Y = P = X Y X1 Y1 T P1 = R P1= T P e P2 = R P1 P2 = R T P P2 = X2 Y2 X Y x y X Y X Y x y P3 = X3 Y3 P = X Y T’ R T’ = R T R-1 P3= R P e P2 = T’ P3  P2 = R T R-1 R P ou P2 = R T P April 05 Prof. Ismael H. F. Santos

33 Geometria Projetiva e Coordenadas Homogêneas em 3D
z x y xh yh zh w x y z 1 m11 m12 m13 m14 m21 m22 m23 m24 m31 m32 m33 m34 m41 m42 m43 m44 = P’ = x’ y’ z’ xh /w yh/w zh/w P x y z = April 05 Prof. Ismael H. F. Santos

34 Transformações em 3D (translações e escalas)
y x’ y’ z’ 1 1 tx x 1 ty y x = 1 tz z z 1 1 x’ y’ z’ 1 sx x sy y = sz z 1 1 April 05 Prof. Ismael H. F. Santos

35 Transformações em 3D (Rotações)
x’ y’ z’ 1 1 x x y cos qx -sen qx y = qy sen qx cos qx z 1 1 x’ y’ z’ 1 cos qy sen qy x qx 1 y qz z = -sen qy cos qy z 1 1 x’ y’ z’ 1 cos qz -sen qx x sen qx cos qx y = 1 z 1 1 April 05 Prof. Ismael H. F. Santos

36 Transformações em 3D (rotação em torno de um eixo qualquer)
y’ z’ 1 m11 m12 m13 x m21 m22 m23 y z 1 = m31 m32 m33 z 1 v = (vx, vy, vz) m11 = vx2 + cosq (1- vx2) m12 = vxvy(1-cosq ) - vz sen q m13 = vzvx(1-cosq ) + vy sen q m21 = vxvy(1-cosq ) + vz sen q m22 = vy2 + cosq (1- vy2) m23 = vyvz(1-cosq ) - vx sen q m31 = vxvz (1-cosq ) - vy sen q m32 = vyvz(1-cosq )+ vx sen q m22 = vz2 + cosq (1- vz2) y x April 05 Prof. Ismael H. F. Santos

37 CG – CO023 Projeções April 05 Prof. Ismael H. F. Santos

38 Projeções Planas Cônicas
Ap B Bp realista não preserva escala não preserva ângulos April 05

39 Projeções Planas Paralelas
Ap B Bp pouco realista preserva paralelismo possui escala conhecida April 05

40 Classificação das projeções planas
Paralelas ortográficas dp // n plantas elevações iso-métrica oblíquas dp não é paralela a n cavaleiras cabinet Cônicas 1 pto de fuga 2 ptos de fuga 3 ptos de fuga April 05

41 Projeções de um cubo Paralelas Cônicas a 1/2 a 1 planta ou elevação
iso-métrica Cabinete (a=45 ou 90) Cavaleira (a=45 ou 90) Cônicas 1 pto de fuga 2 ptos de fuga April 05

42 Projeção plana é uma transformação linear?
Ou seja: T(P+Q) = T(P)+T(Q) e T(aP) = aT(P) ? 2V V 2V plano de projeção (2V)p¹ 2(Vp) V 2Vp Vp O Vp O cp cp Projeções cônicas não são TL, paralelas podem ser. April 05

43 Projeção plana paralela é uma transformação linear?
T(P+Q) = T(P)+T(Q) ? P O Q Qp Pp P+Q retas paralelas projetam em paralelas Qp Pp Pp+ Qp T( 0 ) = 0 ? Projeção paralela em plano que passa pela origem é uma transformação linear April 05

44 Matrizes de projeções Cavaleiras e Cabinetes
y y M 1 (1,1,1) k a 1 x x z Â3 Â2 T(1,0,0) = (1,0) T(0,1,0) = (0,1) T(0,0,1) = ( -k cos a, -k sin a ) k.cos(a) M = k.sin(a) April 05

45 Matrizes de projeções pseudo-isométricas
y y M j jp 1 (1,1,1) x i x kp ip k z Â3 Â2 T(1,0,0) = (cos 30 ,-sin 30) T(0,1,0) = (0,1) T(0,0,1) = (-cos 30, -sin 30) cos cos30 M = -sin sin30 April 05

46 Projeção cônica simples
xe ye ze P Pp zp = -d xe xp d -ze = ye yp d -ze = xe ye xp yp d ye yp -ze = d xp xe -ze = -ze d d = n April 05 Prof. Ismael H. F. Santos xe y z e e z e

47 Projeção cônica simples
xe xp -ze = d xe ye ze P Pp d ye yp -ze = zp = -d xp yp zp 1 d -1 xe d xe d ye d ze -ze (d/-ze) xe (d/-ze) ye -d 1 ye ze 1 = = = ¸ w w April 05 Prof. Ismael H. F. Santos

48 Simplificação da projeção cônica
Projeção ortográfica eye plano de projeção direção de projeção plano de projeção April 05 Prof. Ismael H. F. Santos

49 Distorce o frustum de visão para o espaço da tela
xe ye ze ze = -n ze = -f n -1 [ P ] = d = n xe ye ze ze = -n ze = -f April 05 Prof. Ismael H. F. Santos

50 Uma equação para profundidade
Ptos no near (z=-n): Ptos no far (z=-f): n n+f -1 n Ÿ f [ P ] = April 05 Prof. Ismael H. F. Santos

51 Translada o paralelepípedo de visão para origem
xe ye ze t b [ T ] = 1 -(r+l)/2 -(t+b)/2 +(f+n)/2 l r xe ye ze (t-b)/2 -(t-b)/2 -(r-l)/2 (r-l)/2 (f-n)/2 -(f-n)/2 April 05 Prof. Ismael H. F. Santos

52 Escala o paralelepípedo de visão no cubo [-1,1]x[-1,1]x[-1,1]
xe ye ze (t-b)/2 -(t-b)/2 -(r-l)/2 (r-l)/2 (f-n)/2 -(f-n)/2 near far 2/(r-l) 1 2/(t-b) -2/(f-n) [S] = xd yd zd 1 -1 near far April 05 Prof. Ismael H. F. Santos

53 Matriz Frustum do OpenGL
n+f -1 n Ÿ f [ P ] = [S T P ] = [ T ] = 1 -(r+l)/2 -(t+b)/2 +(f+n)/2 OpenGL Spec [S] = 2/(r-l) 1 2/(t-b) -2/(f-n) April 05 Prof. Ismael H. F. Santos

54 Projeção Cônica (Frustum)
void glFrustum( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_, GLdouble far_ ); view frustum ye ze xe camera (eye) Obs.: near e far são distâncias( > 0) Plano de projeção left right top bottom far near April 05 Prof. Ismael H. F. Santos xe ye ze ze

55 Projeção Cônica (Perspective)
void glPerspective( GLdouble fovy, GLdouble aspect, GLdouble near_, GLdouble far_ ); ye w aspect = w/h ze h xe near far fovy xe ze April 05 Prof. Ismael H. F. Santos

56 Matriz Ortho do OpenGL OpenGL Spec [ T ] = [S] = -(r+l)/2 -(t+b)/2 1
1 -(r+l)/2 -(t+b)/2 +(f+n)/2 OpenGL Spec [S] = 2/(r-l) 1 2/(t-b) -2/(f-n) April 05 Prof. Ismael H. F. Santos

57 Projeção Paralela (Ortho)
near ye top far bottom ze A xe left right void glOrtho( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_, GLdouble far_ ); void gluOrtho2D( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top ); April 05 Prof. Ismael H. F. Santos

58 Glu Look At void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz); Dados: eye, ref, up (definem o sistema de coordenadas do olho) Determine a matriz que leva do sistema de Coordenadas dos Objetos para o sistema de Coordenadas do Olho up eye center Coordenadas dos Objetos Coordenadas do Olho April 05 Prof. Ismael H. F. Santos

59 Calcula o sistema - xe ye ze
vup center eye z0 y0 x0 view dados: eye, center, up view = center - eye vup ze eye view z0 y0 x0 center ze = – view / ||view|| April 05 Prof. Ismael H. F. Santos

60 Calcula o sistema - xe ye ze
center eye vup z0 y0 x0 view ze xe xe = (vup x ze) / ||vup x ze|| center eye vup z0 y0 x0 view ze xe ye eye vup ze xe ye view ye = ze x xe April 05 Prof. Ismael H. F. Santos

61 Translada o eye para origem
center eye z0 y0 x0 ze xe ye eyex eyey eyez [ T ] = z0 y0 x0 center eye ze xe ye April 05 Prof. Ismael H. F. Santos

62 Roda xe ye ze para xo yo zo
xex xey xez 0 yex yey yez 0 zex zey zez 0 z0 y0 x0 center eye ze xe ye xe , xo ye , yo ze , zo April 05 Prof. Ismael H. F. Santos

63 Matriz Look At do OpenGL
eyex eyey eyez [ T ] = ze = – view / ||view|| [ R T ] =? xe = (vup x ze) / ||vup x ze|| ye = ze x xe [ R ] = xex xey xez 0 yex yey yez 0 zex zey zez 0 April 05 Prof. Ismael H. F. Santos

64 Concatenação das transformações
z0 y0 x0 center eye ze xe ye [ R ] xe ye ze [ T ] [ P ] center eye z0 y0 x0 ze xe ye xe ye ze [ T2 ] [ T ] [ R ] [ P ] [ T2 ] [ S ] xe ye ze [ S ] xe ye ze 1 -1 near far April 05 Prof. Ismael H. F. Santos

65 CG – CO023 Visualização OpenGL April 05
Prof. Ismael H. F. Santos

66 Simplificação da projeção cônica
Projeção ortográfica eye plano de projeção direção de projeção April 05 Prof. Ismael H. F. Santos plano de projeção

67 Problema do clipping ye ze xe ¸ w ye P2 P1 ze xe P’1 P’2 n n n+f -1
n n+f -1 nŸf 1 n -1 1 -n n -n2 n+f -1 nŸf = 1 n -1 = = n n2+2nf -n-2f 1 -n 1 xe ye ze ¸ w P’1 P’2 April 05 Prof. Ismael H. F. Santos

68 Clipping em coordenadas homogêneas
xd yd zd 1 -1 near far right left bottom top x Î [left, right] y Î [bottom, top] z Î [near, far] -1 £ x £ 1 -1 £ y £ 1 -1 £ z £ 1 -1 £ xh/w £ 1 -1 £ yh/w £ 1 -1 £ zh/w £ 1 April 05 Prof. Ismael H. F. Santos

69 Clipping em coordenadas homogêneas
x Î [left, right] y -1 £ xh/w £ 1 x xh £ w , se w>0 -1 1 xh/w £ 1 xh ³ w , se w<0 OpenGL Spec April 05 Prof. Ismael H. F. Santos

70 Clipping em coordenadas homogêneas
y x Î [left, right] -1 1 x -1 £ xh/w £ 1 xh -w = 0 1 -1 x xh £ w xh £ -w não serve! w < 0 (ze>0) w xh ³ w -1 xh ³ -w -xh -w = 0 April 05 Prof. Ismael H. F. Santos

71 Equação de um plano N.P = Ax + By + Cz N.P = N.(P0 + D P) = N.P0 = d
(N.DP = 0) d = Ax + By + Cz N=(A,B,C) z Ax + By + Cz +D = 0 P0 D P d P=(x,y,z) (A, B, C) = N e D = -d = N.(-P0 ) O y x April 05 Prof. Ismael H. F. Santos

72 Distância de um ponto a um plano
N.P = Ax + By + Cz N=(A,B,C) N.P =N.(Pp +D P ) D P P=(x,y,z) N.P = d + N.D P z N.D P = Ax + By + Cz+D Pp O y x April 05 Prof. Ismael H. F. Santos

73 Interseção de reta com plano
d1 = | Ax1 + By1 + Cz1+D | d1 P d2 = | Ax2 + By2 + Cz2+D | z d2 P2 P = d1 P2 + d2 P1 d1 + d2 y x April 05 Prof. Ismael H. F. Santos

74 Cálculo das distâncias
/* ===================== Distance ====================== ** ** This function computes and returns the distance between a ** point and a plane. Normal points toward out. */ double Distance(double x, double y, double z, double w, int plane ) { switch( plane ) case 0: return( -w - x ); case 1: return( -w + x ); case 2: return( -w - y ); case 3: return( -w + y ); case 4: return( -w - z ); case 5: return( -w + z ); } return( 0.0 ); April 05 Prof. Ismael H. F. Santos

75 Transformação para o Viewport
void glViewport(GLint x0, GLint y0, GLsizei width, GLsizei height ); xw = x0 + w*(xd -(-1)) / 2 yw = y0 +h*(yd -(-1)) / 2 zw = zd / 2 + 1/2 yw xd yd zd 1 -1 h w xw April 05 Prof. Ismael H. F. Santos zw[0..1]

76 Transformações de um vértice
OpenGL Spec April 05 Prof. Ismael H. F. Santos

77 Modelo do Pintor profundidade z April 05
Prof. Ismael H. F. Santos

78 Problemas na ordenação de faces
+ + za zb April 05 Prof. Ismael H. F. Santos

79 BSP trees: Binary Space Partion Trees
1 2 3 4 5a 5b 3 frente atrás 1 2 5a 4 5b 1 2 3 4 5a 5b 3 frente atrás 2 4 5b frente atrás 5a 1 1 2 3 4 5a 5b 3 2 4 5a 1 5b April 05 Prof. Ismael H. F. Santos

80 Exibição de uma BSP void bspDisplay(bspTree *tree) {
if (arvore não é vazia) { if (observador está a frente da raiz) { bspDisplay(tree®backChild); DisplayPolygon(tree®root); bspDisplay(tree®frontChild); } else { Mostra a árvore de trás, a raiz e a árvore da frente. Mostra a árvore da frente, a raiz e a árvore de atrás. April 05 Prof. Ismael H. F. Santos

81 BSP trees: Dois exemplos de exibição
1 2 3 4 5a 5b 5a, 2, 1, 3, 5b, 4 1 2 3 4 5a 5b 4, 5b, 3, 5a, 2, 1 April 05 Prof. Ismael H. F. Santos

82 ZBuffer: idéia básica z MATRIZ DE PROFUNDIDADES April 05
Prof. Ismael H. F. Santos

83 Rasterização de Polígonos e Linhas
April 05 Prof. Ismael H. F. Santos

84 ZBuffer - pseudo-código
void ZBuffer( void) { int x,y; for (x=0; x<w; x++) { for (y=0;y<h; y++) { WritePixel(x,y, bck_color); WriteZ(x,y,0); } for (each primitive) { for (each pixel in the projected primitive) { double pz = z coordinate of the (x,y) pixel; if (pz <= ReadZ(x,y)) { WritePixel(x,y, color); WriteZ(x,y,pz); } /* Zbuffer */ void glEnable( GL_DEPTH_TEST ); April 05 Prof. Ismael H. F. Santos


Carregar ppt "Computação Gráfica Módulo III – Geometria"

Apresentações semelhantes


Anúncios Google