Matemática para CG Soraia Raupp Musse 1 Sumário • Introdução • Revisão Matemática – Vetores – Matrizes 2 Introdução • Em CG, trabalha-se com objetos definidos em um mundo 3D • Todos os objetos têm forma, posição e orientação • Precisamos de programas de computador que descrevam esses objetos e como a luz interage com eles, de forma que o valor do pixels possam ser computados 3 Introdução • Dois conceitos matemáticos ajudam enormemente em CG: – Análise e álgebra vetorial – Transformações • Com estas duas diciplinas saberemos: – Como descrever os objetos geométricos de uma cena – Como converter idéias geométricas para números • Como resultado tem-se uma coleção de algoritmos úteis em CG 4 Revisão Matemática - Vetores • Por que vetores são tão importantes para CG? – Utilizados para resolver problemas que seriam dificilmente resolvidos via outro método – Aritmética vetorial provê uma maneira unificada de se expressar idéias geométricas algebricamente – Ray-Tracing 5 Exemplos – Ray-Tracing Fonte: www.povray.org 6 Rendering reflexão difusa reflexão especular image refração sombras eye Olho virtual Principais fenômenos que podem acontecer na interação entre luz e objetos 7 Mais Exemplos 8 9 10 Mais Exemplos 11 Exemplos – Ray-Tracing 12 Revisão Matemática - Vetores • SRs mão direita e mão esquerda 13 Revisão Matemática - Vetores • Geometricamente, vetores são objetos com comprimento e direção • Podem representar diversas entidades físicas, como força e velocidade • vr = P − Q (Diferença de dois pontos é um vetor) r Q + v = P (Ponto + vetor = Ponto) r v = (v1 , v2 ,..., vn ) (Vetor n - dimensional) Q v P • Applet http://www.fisica.ufpb.br/prolicen/a pplets.html 14 Vetores Especiais j j a k i k i r a = [axi ayj azk ] r a = axi + ayj + azk 15 Vetores – Produto Escalar • Vetores unitários padrões r r r i = (1,0,0) , j = (0,1,0) ,k = (0,0,1) r r r (a,b,c ) = ai + bj + ck r r r r Ex : v = (2,5,−1) = 2(1,0,0) + 5(0,1,0) − 1(0,0,1) = 2i + 5 j − 1k 16 Revisão Matemática - Vetores j j a k i k i Inversão de vetores: MULT(-1) r a = [axi ayj azk ] r a = axi + ayj + azk r − 1.a = −axi − ayj − azk Como ficaria -1.a? 17 Revisão Matemática - Vetores • Magnitude, tamanho (sempre positivo) ou módulo do vetor DISTÂNCIA ENTRE DOIS PONTOS • Origem em Pitágoras r r r r v = (v1 , v2 ,..., vm ) r2 r2 r2 v = v1 + v2 + ... + vm 2 2 h 2 = l1 + l2 + l3 2 a=axi+ayj+azk ay a = ax 2 + ay 2 + az 2 az ax 18 Revisão Matemática - Vetores • Vetor Unitário (magnitude = 1) – Algumas vezes é interessante normalizar um vetor, tornando-o unitário r a ax ay ax aˆ = r = r r r a a a a r 3 −4 Ex : a = (3,−4), a = 5 e aˆ = , , aˆ = 1 5 5 19 Para você fazer: r Sendo a = (2,−3), calcule (escreva com a notação matemática) : Módulo de a : Vetor unitário a : Módulo do vetor Unitário a : 20 Resultado: r Sendo a = (2,−3), calcule (escreva com a notação matemática) : Módulo de a : Vetor unitário a : Módulo do vetor Unitário a : r a = (2,−3) a = 13 ≅ 3,6055 −3 2 aˆ = , = (0,55,−0,83) 3,6055 3,6055 aˆ = 1 21 Revisão Matemática - Vetores • Operações Básicas: – Soma de Vetores r r a = [ax ay az ] b = [bx by bz ] r a = (5,3,6) r b = (−2,−5,1) r r a + b = (3,−2,7) r r r r a − b = a + (−b ) = (5,3,6) + (2,5,−1) = (7,8,5) 22 Revisão Matemática - Vetores (7,8) • Operações Básicas: – Soma de Vetores r r a = [ax ay az ] b = [bx by bz ] r a = (5,3,6) r b = (−2,−5,1) r r a + b = (3,−2,7) r r r r a − b = a + (−b ) = (5,3,6) + (2,5,−1) = (7,8,5) (5,3) (3,-2) (-2,-5) 23 Revisão Matemática - Vetores • Operações Básicas: – Soma de Vetores Lei do paralelograma: •Transporta paralelas •Diagonal=Soma (5,3) (3,-2) 24 (-2,-5) Revisão Matemática - Vetores • Operações Básicas: – Multiplicação por Escalar r a = (2,5,6) r 6.a = (12,30,36) 25 Revisão Matemática - Vetores • Combinação Linear – Utilizado para splines e representações paramétricas r r r r v = a1v1 + a2 v2 + ... + am vm , onde a1 , a2 ,..., am são escalares. 26 Revisão Matemática - Vetores • Soma de Vetores – Propriedades da adição: a,b,c (vetores) e k,l (escalares) r r r r a + b = b + a → Comutativa r r r r r r a + b + c = a + b + c → Associativa r r k (la ) = kla → Associativa r r r (k + l )a = ka + la → Distributiva r r r r k a + b = ka + kb → Distributi va ( ( ) ( ) ) 27 Com você outra vez… r r Sejam a = ( 2,4 , − 3 ), b = (5,−1,2), r c = ( 0,2, − 1 ),k = 5 e l = -1, responda : r r a +b = r r r a+ b +c = r k (la ) = r r ka + la = r r ka + kb = ( ) 28 Respostas: r r Sejam a = ( 2 ,4 , − 3 ), b = (5,−1,2), r c = ( 0 ,2 , − 1 ),k = 5 e l = -1, responda : r r a + b = (7,3,−1) r r r a + b + c = (7,5,−2) r k (la ) = (−10,−20,15) r r r ka + la = a (k + l ) = (8,16,−12) r r r ka + kb = k (a + b) = (35,15,−5) ( ) 29 Entre Vetores – Produto Escalar • Produz um escalar r r r r r r r r v = (v1 , v2 ,..., vn ) e w = ( w1 , w2 ,..., wn ), rr n r r d = v .w = ∑ vi .wi i =1 – Ex: v = (2, 3, 1), w = (0, 4, -1) = 11 • Propriedades – – – – Comutativa: a.b = b.a Distributiva: (a+c). b= a.b +c.b Associativa: (sa).b = s(a.b) Produto Escalar de b com ele mesmo é o quadrado do comprimento de b r2 r r b = b .b 30 Revisão Matemática - Vetores • Uma aplicação interessante é achar o cosseno do ângulo entre 2 vetores. – Exemplo de aplicação 31 Vetores – Produto Escalar • Ângulo entre dois vetores (b e c) – Mais importante aplicação do produto escalar Lei do cosseno : r b = [bx by ] bx = b cos α b by = b sin α b 32 Vetores – Produto Escalar • Ângulo entre dois vetores (b e c) – Mais importante aplicação do produto escalar Lei do cosseno : r b = [bx by ] bx = b cos α b by = b sin α b by alpha bx 33 Vetores – Produto Escalar • Ângulo entre dois vetores (b e c) – Mais importante aplicação do produto escalar Lei do cosseno : r b = [bx by ] bx = b cos α b by = b sin α b r b = ( b cos α b , b sin α b ) r c = ( c cos α c , c sin α c ) rr b .c = b c cos α c cos α b + b c sin α c sin α b rr b .c = b c (cos α c cos α b + sin α c sin α b ) 34 Vetores – Produto Escalar • Ângulo entre dois vetores (b e c) – Mais importante aplicação do produto escalar Lei do cosseno : r b = [bx by ] Como cos(a − b) = cos(a ) cos(b) + sin( a ) sin(b), temos rr b .c = b c cos(α c − α b ) rr b .c = b c cos θ (θ = ângulo entre b e c) bx = b cos α b r b = ( b cos α b , b sin α b ) cos θ = bˆ.cˆ r c = ( c cos α c , c sin α c ) rr b .c = b c cos α c cos α b + b c sin α c sin α b rr b .c = b c (cos α c cos α b + sin α c sin α b ) 35 Vetores – Produto Escalar • Ângulo entre dois vetores (b e c) – Mais importante aplicação do produto escalar Lei do cosseno : r b = [bx by bz ] bx = b cos α b b = ( b cos α b , b sin α b ) Como cos(a − b) = cos(a ) cos(b) + sin( a ) sin(b), temos b.c = b c cos(α c − α b ) b.c = b c cos θ (θ - > ângulo entre b e c) cos θ = bˆ.cˆ c = ( c cos α c , c sin α c ) b.c = b c cos α c cos α b + b c sin α b sin α b b.c = b c (cos α c cos α b + sin α b sin α b ) O cosseno do ângulo entre dois vetores é o produto escalar destes vetores normalizados 36 Para você fazer... • Calcule o ângulo entre os vetores: b = (3,4) e c = (5,2) 37 Vetores – Produto Escalar • Ex: b = (3,4) e c = (5,2) b = 5, c = 5.385 3 4 bˆ = , , cˆ = (0.9285,0.3714) 5 5 bˆ.cˆ = 0.85422 = cos θ = 31.325o (deg rees) = 0,54( radianos ) • Conversão de graus em radianos e radianos em graus? 180 graus = 3,1416radianos 38 Vetores – Produto Escalar • Ex: b = (3,4) e c = (5,2) b = 5, c = 5.385 3 4 bˆ = , , cˆ = (0.9285,0.3714) 5 5 bˆ.cˆ = 0.85422 = cosθ = 31.325o • Sinal de b.c e Perpendicularidade b.c>0 cosθ > 0 se θ < 90o → b.c > 0 b.c=0 (Perpendiculares) o cosθ = 0 se θ = 90 → b.c = 0 cosθ < 0 se θ > 90o → b.c < 0 b.c<0 39 Vetores – Produto Vetorial • Produz como resultado um vetor perpendicular aos dois vetores operandos • Válido para 3D r r a = (a x ,a y ,a z ), b = (bx ,by ,bz ), a × b a × b = (a y bz − a z by )i + (a z bx − a x bz ) j + (a x by − a y bx )k i a × b = ax j ay k az bx by bz 40 Vetores – Produto Vetorial • Produz como resultado um vetor perpendicular aos dois vetores operandos • Válido para 3D r r a = (a x ,a y ,a z ), b = (bx ,by ,bz ), a × b a × b = (a y bz − a z by )i + (a z bx − a x bz ) j + (a x by − a y bx )k i a × b = ax j ay k az bx by bz (aybz-azby)i 41 Vetores – Produto Vetorial • Produz como resultado um vetor perpendicular aos dois vetores operandos • Válido para 3D r r a = (a x ,a y ,a z ), b = (bx ,by ,bz ), a × b a × b = (a y bz − a z by )i + (a z bx − a x bz ) j + (a x by − a y bx )k i a × b = ax j ay k az bx by bz -(axbz-azbx)j (-axbz+azbx)j (azbx-axbz)j 42 Vetores – Produto Vetorial • Produz como resultado um vetor perpendicular aos dois vetores operandos • Válido para 3D r r a = (a x ,a y ,a z ), b = (bx ,by ,bz ), a × b a × b = (a y bz − a z by )i + (a z bx − a x bz ) j + (a x by − a y bx )k i a × b = ax j ay k az bx by bz (axby-aybx)k 43 Vetores – Produto Vetorial • Normal de um Plano – Importante aplicação do produto vetorial – P1, P2 e P3 sempre determinam um plano • a = P2 – P1 • b = P3 – P1 – axb = Vetor normal ao plano 44 Rendering reflexão difusa reflexão especular image refração sombras eye Olho virtual Principais fenômenos que podem acontecer na interação entre luz e objetos 45 Matrizes • Arranjo retangular de elementos • Matriz com m linhas e n colunas é dita matriz mxn • Matriz Quadrada: m=n – Exemplo (2x2, 3x3, 4x4) • Matriz Identidade: • Vetor Linha: 1xn • Vetor Coluna: nx1 1 0 0 I = 0 1 0 0 0 1 L = (1 1 1) 1 C = 1 1 46 Matrizes - Operações 3 2 − 5 18 12 − 30 • Scale: − 1 8 0 − 6 48 0 A= = 4×3 – Multiplica cada elemento 6A = 6 3 9 36 18 54 da Matriz por um 1 21 2 fator de escala 6 126 12 • Soma: – Se duas matrizes têm o mesmo número de linhas e colunas, elas podem ser somadas (mesma forma) • Matriz Transposta: – Troca linhas por colunas 21 14 − 35 0 − 7 56 A + 6A = 42 21 63 7 147 14 3 −1 6 1 AT = 2 8 3 21 = 3 × 4 −5 0 9 2 47 Matrizes - Operações • Produto: – Definido somente se matrizes são conformes • Número de colunas de A(mxn) = Número de linhas de B(nxp), resultando em matrix C que será de dimensão (mxp) 6 2 0 6 − 3 − 1 Ex : 8 1 − 4 0 3 0 5 7 1 −5 2 15 − 14 1 = 11 13 1 11 20 8 – Propriedades (A,B,C são conformes) • • • • (AB)C = A(BC) A(B+C) = AB+AC (A+B)C = AC+BC (AB)T=BT AT 48 Matrizes - Operações • Produto: – Definido somente se matrizes são conformes • Número de colunas de A(mxn) = Número de linhas de B(nxp), resultando em matrix C que será de dimensão (mxp) 6 2 0 6 − 3 − 1 Ex : 8 1 − 4 0 3 0 5 7 1 − 5 2 45 − 14 1 = 35 13 1 11 20 8 2.6+0.-1+6.3+-3.-5=12+0+18+15=45 2.2+0.1+6.1+-3.8=4+0+6-24=-14 8.6+1.-1+-4.3+0.-5=48-1-12+0=35 8.2+1.1+-4.1+0.8=16+1-4+0=13 0.6+5.-1+7.3+1.-5=0-5+21-5=11 0.2+5.1+7.1+1.8=0+5+7+8=20 49 Vamos trabalhar de novo? ☺ 2 − 1 3 − 1 5 0 1 2 = 4 4 6 1 50 Resultado: 2 − 1 3 − 1 − 1 5 0 1 2 = − 4 4 4 6 1 10 51 De novo? AB=C Calcule C 2 − 1 A = 3 4 1 0 3 B = 5 2 4 52 Resultado 2 − 1 A = 3 4 1 0 3 B = 5 2 4 − 3 − 2 2 C = 23 8 25 53