Curvas Curvas Claudio Esperana Paulo Roma Cavalcanti Modelagem Geomtrica Modelagem Geomtrica Disciplina que visa obter representaes algbricas para curvas e superfcies com determinado aspecto e/ou propriedades At agora temos considerado quase que exclusivamente objetos geomtricos compostos de segmentos de reta ou polgonos (curvas/superfcies lineares por parte) ! Na maioria dos casos, so aproximaes de curvas e superfcies algbricas ! Mesmo quando s podemos desenhar segmentos de reta e polgonos, conhecer o objeto que estamos aproximando fundamental Curvas e Superfcies Paramtricas Curvas e Superfcies Paramtricas Normalmente, o resultado da modelagem dado em forma paramtrica ! Permite que a curva/superfcie seja desenhada (aproximada) facilmente ! Permite indicar que trechos da curva/superfcie sero usados ! Manipulao algbrica mais simples Curva em 3D dada por ! C(t) = [C x (t) C y (t) C z (t)] T Superfcie em 3D dada por ! S(u, v) = [S x (u, v) S y (u, v) S z (u, v)] T Continuidade Continuidade Normalmente queremos curvas e superfcies suaves Critrio de suavidade associado com critrio de continuidade algbrica ! Continuidade C 0 ! funes paramtricas so contnuas, isto , sem pulos ! Continuidade C 1 ! funes paramtricas tm primeiras derivadas contnuas, isto , tangentes variam suavemente ! Continuidade C k ! funes paramtricas tm ksimas derivadas contnuas Alternativamente, G k : continuidade geomtrica ! Independente de parametrizao ! Assumir curva parametrizada por comprimento de arco C 1 C 0 C 2 Interpolao x Aproximao Interpolao x Aproximao natural querermos modelar uma curva suave que passa por um conjunto de pontos dados Se a curva desejada polinomial, chamamos tal curva de interpolao polinomial lagrangeana Entretanto, o resultado nem sempre o esperado (oscilaes) mais comum querermos curvas que passem perto dos pontos dados, isto , aproximaes Algoritmo de Algoritmo de De De Casteljau Casteljau Suponha que queiramos aproximar uma curva polinomial entre dois pontos p 0 e p 1 dados A soluo natural um segmento de reta que passa por p 0 e p 1 cuja parametrizao mais comum p(u) = (1 u) p 0 + u p 1 Podemos pensar em p(u) como uma mdia ponderada entre p 0 e p 1 Observe que os polinmios (1 u) e u somam 1 para qualquer valor de u ! So chamadas de funes de mistura (blending functions) p 0 p 1 u Algoritmo de Algoritmo de De De Casteljau Casteljau Para generalizar a idia para trs pontos p 0 , p 1 e p 2 consideramos primeiramente os segmentos de reta p 0 -p 1 e p 1 p 2 p 01 (u) = (1 u) p 0 + u p 1 p 11 (u) = (1 u) p 1 + u p 2 Podemos agora realizar uma interpolao entre p 01 (u) e p 12 (u) p 02 (u) = (1 u) p 01 (u) + u p 11 (u) = (1 u) 2 p 0 + 2 u (1 u) p 1 + u 2 p 2 Algoritmo de Algoritmo de De De Casteljau Casteljau p 1 p 11 p 01 u = 0.25 p 02 p 2 p 0 Algoritmo de Algoritmo de De De Casteljau Casteljau p 1 p 11 p 01 u = 0.5 p 02 p 2 p 0 Algoritmo de Algoritmo de De De Casteljau Casteljau p 1 p 11 p 01 u = 0.75 p 02 p 2 p 0 Algoritmo de Algoritmo de De De Casteljau Casteljau p 1 p 02 (u) p 2 p 0 Algoritmo de Algoritmo de De De Casteljau Casteljau A curva obtida pode ser entendida como a mistura dos pontos p 0 , p 1 e p 2 por intermdio de trs funes quadrticas: ! b 02 (u) = (1 u) 2 ! b 12 (u) = 2 u (1 u) ! b 22 (u) = u 2 Aplicando mais uma vez a idia podemos definir uma cbica por 4 pontos p 02 (u) = (1 u) 2 p 0 + 2 u (1 u) p 1 + u 2 p 2 p 12 (u) = (1 u) 2 p 1 + 2 u (1 u) p 2 + u 2 p 3 p 03 (u) = (1 u) p 02 (u) + u p 12 (u) = (1 u) 3 p 0 + 3 u (1 u) 2 p 1 + 3 u 2 (1 u) p 2 + u 3 p 3 Algoritmo de Algoritmo de De De Casteljau Casteljau p 3 p 1 p 02 (u) p 12 (u) p 03 p 0 u = 0.25 p 2 Algoritmo de Algoritmo de De De Casteljau Casteljau p 3 p 1 p 02 (u) p 12 (u) p 03 p 0 u = 0.5 p 2 Algoritmo de Algoritmo de De De Casteljau Casteljau p 3 p 1 p 02 (u) p 12 (u) p 03 p 0 u = 0.75 p 2 Algoritmo de Algoritmo de De De Casteljau Casteljau p 3 p 1 p 02 (u) p 12 (u) p 03 (u) p 0 p 2 Algoritmo de Algoritmo de De De Casteljau Casteljau Novamente temos uma curva dada pela soma de 4 funes de mistura (agora cbicas), cada uma multiplicada por um dos 4 pontos ! b 03 (u) = (1 u) 3 ! b 13 (u) = 3 u (1 u) 2 ! b 23 (u) = 3 u 2 (1 u) ! b 33 (u) = u 3 Em geral, uma curva de grau n pode ser construda desta forma e ser expressa por ! " " n j j n j n u b u 0 0 ) ( ) ( p p Curvas de Curvas de Bzier Bzier e Polinmios de e Polinmios de Bernstein Bernstein As curvas construdas pelo algoritmo de De Casteljau so conhecidas como curvas de Bzier e as funes de mistura so chamadas de base Bzier ou polinmios de Bernstein Observamos que os polinmios de Bernstein de grau n tm como forma geral b i n (u) = c i u i (1 u) ni Se escrevermos as constantes c i para os diversos polinmios, teremos ! 1 o grau: 1 1 ! 2 o grau: 1 2 1 ! 3 o grau: 1 3 3 1 ! 4 o grau: 1 4 6 4 1 Vemos que o padro de formao corresponde ao Tringulo de Pascal e portanto, podemos escrever i n i n i u u i n u b # # $ $ % & ' ' ( ) " ) 1 ( ) ( Polinmios de Bernstein Polinmios de Bernstein Polinmios de Bernstein de grau 3 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.2 0.4 0.6 0.8 1 u b03(u) b13(u) b23(u) b33(u) Forma Matricial da Base Forma Matricial da Base Bzier Bzier Podemos escrever a equao para uma curva de Bzier cbica na forma * * * * + , - - - - . / # # # # " * * * * + , - - - - . / " " 1 3 3 1 0 3 6 3 0 0 3 3 0 0 0 1 ] 1 [ ) ( ) ( 3 2 1 ` 0 3 2 03 B B B u u u u u M M p p p p M p p Bzier base da es coeficient de matriz a onde
Propriedades de Curva de Propriedades de Curva de Bzier Bzier Continuidade infinita (todas as derivadas so contnuas) O grau da curva (do polinmio) dado pelo nmero de pontos do polgono de controle menos 1 A curva de Bzier est contida no fecho convexo do polgono de controle ! Os polinmios de Bernstein somam 1 para qualquer u A curva interpola o primeiro e ltimo ponto do polgono de controle Propriedades de Curva de Propriedades de Curva de Bzier Bzier As tangentes curva em p 0 e p n tm a direo dos segmentos de reta p 0 p 1 e p n-1 p n , respectivamente ! Para cbicas, as derivadas so 3(p 1 p 0 ) e 3(p 2 p 3 ) Qualquer linha reta intercepta a curva tantas ou menos vezes quanto intercepta o polgono de controle ! No pode oscilar demasiadamente Transformar os pontos de controle (transf. afim) e desenhar a curva equivalente a desenhar a curva transformada Desenhando Curvas Desenhando Curvas Bzier Bzier Curva normalmente aproximada por uma linha poligonal Pontos podem ser obtidos avaliando a curva em u = u 1 , u 2 ... u k ! Avaliar os polinmios de Bernstein ! Usar o algoritmo recursivo de De Casteljau Quantos pontos? ! Mais pontos em regies de alta curvatura Idia: subdividir recursivamente a curva em trechos at que cada trecho seja aproximadamente reto Subdiviso de Curvas Subdiviso de Curvas Bzier Bzier Como saber se trecho da curva reto? ! Encontrar o polgono de controle do trecho ! Parar se vrtices do polgono forem aproximadamente colineares p 10 p 20 u = 0.5 p 01 p 11 p 21 p 02 p 12 p 03 p 30 p 00 Curvas de Curvas de Hermite Hermite Ao invs de modelar a curva a partir de um polgono de controle (Bzier), especifica-se pontos de controle e vetores tangentes nesses pontos Vantagem: fcil emendar vrias curvas bastando especificar tangentes iguais nos pontos de emenda Exemplos (cbicas): Curvas de Curvas de Hermite Hermite No caso de cbicas, temos o ponto inicial e final alm dos vetores tangentes 0 1 * * * * + , - - - - . / # # # # " * * * * + , - - - - . / 2 2 " 1 1 0 0 1 2 1 0 2 3 0 0 2 3 0 1 ) 1 ( ) 0 ( 1 ) ( 1 0 3 2 H H u u u u M p p p p M p onde
Curvas Longas Curvas Longas Curvas Bzier com k pontos de controle so de grau k 1 Curvas de grau alto so difceis de desenhar ! Complexas ! Sujeitas a erros de preciso Normalmente, queremos que pontos de controle tenham efeito local ! Em curvas Bzier, todos os pontos de controle tm efeito global Soluo: ! Emendar curvas polinomiais de grau baixo ! Relaxar condies de continuidade Emendando Curvas Emendando Curvas Bzier Bzier Continuidade C 0 : ltimo ponto da primeira = primeiro ponto da segunda Continuidade C 1 : C 0 e segmento p 2 p 3 da primeira com mesma direo e comprimento que o segmento p 0 p 1 da segunda Continuidade C 2 : C 1 e + restries sobre pontos p 1 da primeira e p 2 da segunda p 3 p 0 p 1 p 2 p 2 p 1 p 2 p 0 Splines Splines A base de Bzier no prpria para a modelagem de curvas longas ! Bzier nica: suporte no local ! Trechos emendados: restries no so naturais Base alternativa: B-Splines ! Nome vem de um instrumento usado por desenhistas ! Modelagem por polgonos de controle sem restries adicionais ! Suporte local Alterao de um vrtice afeta curva apenas na vizinhana ! Existem muitos tipos de Splines, mas vamos nos concentrar em B-splines uniformes Uma B-spline uniforme de grau d tem continuidade C d-1 Curvas Curvas B B - - Spline Spline Funes de base so no nulas apenas em um intervalo no espao do parmetro ! Como impossvel obter isso com apenas 1 polinomial, cada funo de base composta da emenda de funes polinomiais ! Por exemplo, uma funo de base de uma B-spline quadrtica tem 3 trechos (no nulos) emendados com continuidade C 1 B i (u) u Curvas Curvas B B - - Spline Spline Todas as funes de base tm a mesma forma, mas so deslocadas entre si em intervalos no espao de parmetros Num determinado intervalo, apenas um pequeno nmero de funes de base so no-nulas ! Numa B-spline quadrtica, cada intervalo influenciado por 3 funes de base B i (u) B i+1 (u) B i1 (u) u Curvas Curvas B B - - Spline Spline Os valores u i do espao de parmetro que delimitam os intervalos so chamados de ns Podemos pensar em intervalos regulares por enquanto (B-Splines uniformes) isto , u i = 1 B i (u) B i+1 (u) B i1 (u) u i u i+1 u i+2 u i+3 u i+4 u i1 u Funes da Base Funes da Base B B - - Spline Spline Queremos exprimir curvas como pontos mesclados por intermdio de funes da base B-Spline onde m o nmero de pontos do polgono de controle e d o grau da B-spline que se quer usar Para derivar as funes da base B-spline pode-se resolver um sistema de equaes ! Para B-splines cbicas, requere-se continuidade C 2 nos ns, a propriedade do fecho convexo, etc Uma maneira mais natural utilizar a recorrncia de Cox-de Boor que exprime as funes da base B-Spline de grau k como uma intepolao linear das funes de grau k-1 ! " " m i i d i u B u 0 , ) ( ) ( p p Recorrncia Recorrncia Cox Cox - - de de Boor Boor 1 , 1 1 1 1 1 , , 1 0 , ) ( contrrio. caso 0 , para 1 ) ( # 3 3 3 3 3 3 # 3 3 # # 3 # # " 4 5 6 7 8 " d k k d k d k d k k d k k d k k k k B u u u u B u u u u u B u u u u B B i,0 (u) B i+1,0 (u) B i+2,0 (u) B i,1 (u) B i+1,1 (u)B i+2,0 (u) B i,2 (u) B i+1,2 (u) B i,3 (u) u i1 u i u i+1 u i+2 u i+3 u i+4 u Recorrncia Recorrncia Cox Cox - - de de Boor Boor 1 , 1 1 1 1 1 , , 1 0 , ) ( 0 , 1 ) ( # 3 3 3 3 3 3 # 3 3 # # 3 # # " 4 5 6 7 8 " d k k d k d k d k k d k k d k k k k B u u u u B u u u u u B u u u u B contrrio. caso para ! " " m i i d i u B u 0 , ) ( ) ( p p p(u i+2 !u<u i+4 ) p i+3 p i p i+1 p i+2 d = 0 (assumir que para u = u i Spline de grau 0 passa por p i ) p(u i !u<u i+1 ) p(u i+2 !u<u i+3 ) p(u i+1 !u<u i+2 ) Recorrncia Recorrncia Cox Cox - - de de Boor Boor 1 , 1 1 1 1 1 , , 1 0 , ) ( 0 , 1 ) ( # 3 3 3 3 3 3 # 3 3 # # 3 # # " 4 5 6 7 8 " d k k d k d k d k k d k k d k k k k B u u u u B u u u u u B u u u u B contrrio. caso para ! " " m i i d i u B u 0 , ) ( ) ( p p p i+2 p i+3 p(u i !u<u i+1 ) p(u i+2 !u<u i+3 ) p i d = 1 p i+1 p(u i+1 !u<u i+2 ) Recorrncia Recorrncia Cox Cox - - de de Boor Boor 1 , 1 1 1 1 1 , , 1 0 , ) ( 0 , 1 ) ( # 3 3 3 3 3 3 # 3 3 # # 3 # # " 4 5 6 7 8 " d k k d k d k d k k d k k d k k k k B u u u u B u u u u u B u u u u B contrrio. caso para ! " " m i i d i u B u 0 , ) ( ) ( p p p i+2 p i+3 p i d = 2 p i+1 Recorrncia Recorrncia Cox Cox - - de de Boor Boor 1 , 1 1 1 1 1 , , 1 0 , ) ( 0 , 1 ) ( # 3 3 3 3 3 3 # 3 3 # # 3 # # " 4 5 6 7 8 " d k k d k d k d k k d k k d k k k k B u u u u B u u u u u B u u u u B contrrio. caso para ! " " m i i d i u B u 0 , ) ( ) ( p p p i+2 p i+3 p i d = 3 p i+1 Propriedades das Propriedades das B B - - Splines Splines Dados n+1 pontos (p 0 ... p n ) , composta de (n-d+1) curvas Bzier de grau d emendadas com continuidade d-1 nos n+d+1 ns u 0 , u 1 , ... , u n+d+1 Cada ponto da curva afetado por d+1 pontos de controle Cada ponto de controle afeta d+1 segmentos Curva restrita ao fecho convexo do polgono de controle Invarincia sob transformaes afim Efeito dos Ns Efeito dos Ns Os intervalos entre ns influenciam a importncia dos pontos de controle ! Exemplo: B-spline Qudrica Inserindo Ns Inserindo Ns Podemos ver que as B-splines uniformes em geral no passam pelos pontos de controle Entretanto, se repetirmos ns podemos fazer a curva se aproximar dos pontos de controle ! Para fazer a interpolao do primeiro ponto usando uma B-Spline cbica, fazemos u 0 = u 1 = u 2 = u 3 ! Para fazer uma B-spline cbica passando por 4 pontos podemos usar o vetor de ns: 0, 0, 0, 0, 1, 1, 1, 1 ! De fato, com este vetor de ns, teremos uma Bzier cbica Curvas Curvas Racionais Racionais Funes so razes ! Avaliados em coordenadas homogneas: ! NURBS (Non-UniformRational B-Splines): x(t), y(t), z(t) e w(t) so B-splines no uniformes Vantagens: ! Invariantes sob transformaes perspectivas e portanto podem ser avaliadas no espao da imagem ! Podem representar perfeitamente sees cnicas tais como crculos, elipses, etc * + , - . / 9 ) ( ) ( , ) ( ) ( , ) ( ) ( )] ( ), ( ), ( ), ( [ t w t z t w t y t w t x t w t z t y t x Parametrizao Parametrizao de um de um Crculo Crculo Por exemplo, uma parametrizao conhecida do crculo dada por Podemos expressar essa parametrizao emcoordenadas homogneas por: 2 2 2 1 2 ) ( 1 1 ) ( u u u y u u u x 3 " 3 # " 2 2 1 ) ( 2 ) ( 1 ) ( u u w u u y u u x 3 " " # " OpenGL OpenGL e Curvas Paramtricas e Curvas Paramtricas OpenGL define o que so chamados de avaliadores que podem avaliar uma curva Bzier para um valor do parmetro ! Para definir os pontos de controle: gl Map1f ( ) ! Para avaliar um ponto: gl Eval Coor d( par am) ! Para avaliar uma seqncia de pontos: gl MapGr i d1f ( n, t 1, t 2) gl Eval Mesh1f ( mode, p1, p2) Essas rotinas avaliam a curva em intervalos regulares no espao de parmetros ! No necessariamente a melhor maneira!