curvas-ppt

44
Introdução à Computação Introdução à Computação Gráfica Gráfica Curvas Curvas Claudio Esperança Paulo Roma Cavalcanti

Upload: fabianorodriguess

Post on 20-Nov-2015

4 views

Category:

Documents


2 download

DESCRIPTION

Curvas Computação Gráfica

TRANSCRIPT

  • Introduo Computao GrficaCurvasClaudio EsperanaPaulo Roma Cavalcanti

  • Modelagem GeomtricaDisciplina que visa obter representaes algbricas para curvas e superfcies com determinado aspecto e/ou propriedadesAt 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 algbricasMesmo quando s podemos desenhar segmentos de reta e polgonos, conhecer o objeto que estamos aproximando fundamental

  • Curvas e Superfcies ParamtricasNormalmente, o resultado da modelagem dado em forma paramtricaPermite que a curva/superfcie seja desenhada (aproximada) facilmentePermite indicar que trechos da curva/superfcie sero usadosManipulao algbrica mais simplesCurva em 3D dada porC(t) = [Cx(t) Cy(t) Cz(t)]TSuperfcie em 3D dada por S(u, v) = [Sx(u, v) Sy(u, v) Sz(u, v)]T

  • ContinuidadeNormalmente queremos curvas e superfcies suavesCritrio de suavidade associado com critrio de continuidade algbricaContinuidade C0 funes paramtricas so contnuas, isto , sem pulos Continuidade C1 funes paramtricas tm primeiras derivadas contnuas, isto , tangentes variam suavementeContinuidade Ck funes paramtricas tm ksimas derivadas contnuas Alternativamente, Gk : continuidade geomtricaIndependente de parametrizaoAssumir curva parametrizada por comprimento de arco

    C0C1C2

  • Interpolao x Aproximao natural querermos modelar uma curva suave que passa por um conjunto de pontos dadosSe a curva desejada polinomial, chamamos tal curva de interpolao polinomial lagrangeanaEntretanto, o resultado nem sempre o esperado (oscilaes) mais comum querermos curvas que passem perto dos pontos dados, isto , aproximaes

  • Algoritmo de De CasteljauSuponha que queiramos aproximar uma curva polinomial entre dois pontos p0 e p1 dados A soluo natural um segmento de reta que passa por p0 e p1 cuja parametrizao mais comum p (u) = (1 u) p0 + u p1Podemos pensar em p (u) como uma mdia ponderada entre p0 e p1 Observe que os polinmios (1 u) e u somam 1 para qualquer valor de u So chamadas de funes de mistura (blending functions)p0p1u

  • Algoritmo de De CasteljauPara generalizar a idia para trs pontos p0, p1 e p2 consideramos primeiramente os segmentos de reta p0-p1 e p1p2p01(u) = (1 u) p0 + u p1p11(u) = (1 u) p1 + u p2Podemos agora realizar uma interpolao entre p01(u) e p12(u) p02(u) = (1 u) p01 (u) + u p11 (u) = (1 u) 2 p0 + 2 u (1 u) p1 + u2 p2

  • Algoritmo de De Casteljaup0p1p2p11p01u = 0.25p02

  • Algoritmo de De Casteljaup0p1p2p11p01u = 0.5p02

  • Algoritmo de De Casteljaup0p1p2p11p01u = 0.75p02

  • Algoritmo de De Casteljaup0p1p2p02(u)

  • Algoritmo de De CasteljauA curva obtida pode ser entendida como a mistura dos pontos p0, p1 e p2 por intermdio de trs funes quadrticas:b02(u) = (1 u) 2 b12(u) = 2 u (1 u) b22(u) = u2Aplicando mais uma vez a idia podemos definir uma cbica por 4 pontosp02(u) = (1 u) 2 p0 + 2 u (1 u) p1 + u2 p2p12(u) = (1 u) 2 p1 + 2 u (1 u) p2 + u2 p3p03(u) = (1 u) p02 (u) + u p12 (u) = (1 u) 3 p0 + 3 u (1 u)2 p1 + 3 u2 (1 u) p2 + u3 p3

  • Algoritmo de De Casteljaup0p1p2p02(u)p12(u)p3u = 0.25p03

  • Algoritmo de De Casteljaup0p1p2p02(u)p12(u)p3u = 0.5p03

  • Algoritmo de De Casteljaup0p1p2p02(u)p12(u)p3u = 0.75p03

  • Algoritmo de De Casteljaup0p1p2p02(u)p12(u)p3p03(u)

  • Algoritmo de De CasteljauNovamente temos uma curva dada pela soma de 4 funes de mistura (agora cbicas), cada uma multiplicada por um dos 4 pontosb03(u) = (1 u) 3 b13(u) = 3 u (1 u)2 b23(u) = 3 u2 (1 u)b33(u) = u3Em geral, uma curva de grau n pode ser construda desta forma e ser expressa por

  • Curvas de Bzier e Polinmios de BernsteinAs 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 bi n(u) = ci ui (1 u)niSe escrevermos as constantes ci para os diversos polinmios, teremos1o grau: 1 1 2o grau: 1 2 13o grau: 1 3 3 1 4o grau: 1 4 6 4 1 Vemos que o padro de formao corresponde ao Tringulo de Pascal e portanto, podemos escrever

  • Polinmios de Bernstein

    Chart3

    0001

    0.0001250.0071250.1353750.857375

    0.0010.0270.2430.729

    0.0033750.0573750.3251250.614125

    0.0080.0960.3840.512

    0.0156250.1406250.4218750.421875

    0.0270.1890.4410.343

    0.0428750.2388750.4436250.274625

    0.0640.2880.4320.216

    0.0911250.3341250.4083750.166375

    0.1250.3750.3750.125

    0.1663750.4083750.3341250.091125

    0.2160.4320.2880.064

    0.2746250.4436250.2388750.042875

    0.3430.4410.1890.027

    0.4218750.4218750.1406250.015625

    0.5120.3840.0960.008

    0.6141250.3251250.0573750.003375

    0.7290.2430.0270.001

    0.8573750.1353750.0071250.000125

    1-00-0

    b03(u)

    b13(u)

    b23(u)

    b33(u)

    u

    Polinmios de Bernstein de grau 3

    Sheet1

    ub03(u)b13(u)b23(u)b33(u)

    00001

    0.050.0001250.0071250.1353750.857375

    0.10.0010.0270.2430.729

    0.150.0033750.0573750.3251250.614125

    0.20.0080.0960.3840.512

    0.250.0156250.1406250.4218750.421875

    0.30.0270.1890.4410.343

    0.350.0428750.2388750.4436250.274625

    0.40.0640.2880.4320.216

    0.450.0911250.3341250.4083750.166375

    0.50.1250.3750.3750.125

    0.550.1663750.4083750.3341250.091125

    0.60.2160.4320.2880.064

    0.650.2746250.4436250.2388750.042875

    0.70.3430.4410.1890.027

    0.750.4218750.4218750.1406250.015625

    0.80.5120.3840.0960.008

    0.850.6141250.3251250.0573750.003375

    0.90.7290.2430.0270.001

    0.950.8573750.1353750.0071250.000125

    11-00-0

    Sheet1

    b03(u)

    b13(u)

    b23(u)

    b33(u)

    u

    Polinmios de Bernstein de grau 3

    Sheet2

    Sheet3

  • Forma Matricial da Base Bzier Podemos escrever a equao para uma curva de Bzier cbica na forma

  • Propriedades de Curva de BzierContinuidade infinita (todas as derivadas so contnuas)O grau da curva (do polinmio) dado pelo nmero de pontos do polgono de controle menos 1A curva de Bzier est contida no fecho convexo do polgono de controleOs polinmios de Bernstein somam 1 para qualquer uA curva interpola o primeiro e ltimo ponto do polgono de controle

  • Propriedades de Curva de BzierAs tangentes curva em p0 e pn tm a direo dos segmentos de reta p0p1 e pn-1pn , respectivamentePara cbicas, as derivadas so 3(p1 p0) e 3(p2 p3)Qualquer linha reta intercepta a curva tantas ou menos vezes quanto intercepta o polgono de controleNo pode oscilar demasiadamenteTransformar os pontos de controle (transf. afim) e desenhar a curva equivalente a desenhar a curva transformada

  • Desenhando Curvas BzierCurva normalmente aproximada por uma linha poligonalPontos podem ser obtidos avaliando a curva em u = u1, u2 ... uk Avaliar os polinmios de BernsteinUsar o algoritmo recursivo de De CasteljauQuantos pontos?Mais pontos em regies de alta curvaturaIdia: subdividir recursivamente a curva em trechos at que cada trecho seja aproximadamente reto

  • Subdiviso de Curvas BzierComo saber se trecho da curva reto?Encontrar o polgono de controle do trechoParar se vrtices do polgono forem aproximadamente colineares

    p00p10p20p30u = 0.5

  • Curvas de HermiteAo invs de modelar a curva a partir de um polgono de controle (Bzier), especifica-se pontos de controle e vetores tangentes nesses pontosVantagem: fcil emendar vrias curvas bastando especificar tangentes iguais nos pontos de emenda Exemplos (cbicas):

  • Curvas de HermiteNo caso de cbicas, temos o ponto inicial e final alm dos vetores tangentes

  • Curvas LongasCurvas Bzier com k pontos de controle so de grau k 1Curvas de grau alto so difceis de desenharComplexasSujeitas a erros de precisoNormalmente, queremos que pontos de controle tenham efeito localEm curvas Bzier, todos os pontos de controle tm efeito globalSoluo:Emendar curvas polinomiais de grau baixoRelaxar condies de continuidade

  • Emendando Curvas BzierContinuidade C0: ltimo ponto da primeira = primeiro ponto da segundaContinuidade C1: C0 e segmento p2p3 da primeira com mesma direo e comprimento que o segmento p0p1 da segundaContinuidade C2: C1 e + restries sobre pontos p1 da primeira e p2 da segunda p0p1p2p2p3p0p1p2

  • SplinesA base de Bzier no prpria para a modelagem de curvas longasBzier nica: suporte no localTrechos emendados: restries no so naturaisBase alternativa: B-SplinesNome vem de um instrumento usado por desenhistasModelagem por polgonos de controle sem restries adicionaisSuporte localAlterao de um vrtice afeta curva apenas na vizinhanaExistem muitos tipos de Splines, mas vamos nos concentrar em B-splines uniformesUma B-spline uniforme de grau d tem continuidade Cd-1

  • Curvas B-SplineFunes de base so no nulas apenas em um intervalo no espao do parmetroComo impossvel obter isso com apenas 1 polinomial, cada funo de base composta da emenda de funes polinomiaisPor exemplo, uma funo de base de uma B-spline quadrtica tem 3 trechos (no nulos) emendados com continuidade C1

    uBi (u)

  • Curvas B-SplineTodas as funes de base tm a mesma forma, mas so deslocadas entre si em intervalos no espao de parmetrosNum determinado intervalo, apenas um pequeno nmero de funes de base so no-nulasNuma B-spline quadrtica, cada intervalo influenciado por 3 funes de base

    uBi (u)Bi+1 (u)Bi1 (u)

  • Curvas B-SplineOs valores ui do espao de parmetro que delimitam os intervalos so chamados de nsPodemos pensar em intervalos regulares por enquanto (B-Splines uniformes) isto , ui = 1

    uBi (u)Bi+1 (u)Bi1 (u)ui1 uiui+1ui+2ui+3ui+4

  • Funes da Base B-SplineQueremos 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 equaesPara B-splines cbicas, requere-se continuidade C2 nos ns, a propriedade do fecho convexo, etcUma 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

  • Recorrncia Cox-de Booruui1 uiui+1ui+2ui+3ui+4

  • Recorrncia Cox-de Boorpipi+1pi+2pi+3d = 0(assumir que para u = ui Spline de grau 0 passa por pi) p (ui u
  • Recorrncia Cox-de Boorpipi+1pi+2pi+3d = 1p (ui u
  • Recorrncia Cox-de Boord = 2pipi+1pi+2pi+3

  • Recorrncia Cox-de Boord = 3pipi+1pi+2pi+3

  • Propriedades das B-SplinesDados n+1 pontos (p0 ... pn) , composta de (n-d+1) curvas Bzier de grau d emendadas com continuidade d-1 nos n+d+1 ns u0 , u1 , ... , un+d+1Cada ponto da curva afetado por d+1 pontos de controleCada ponto de controle afeta d+1 segmentos Curva restrita ao fecho convexo do polgono de controleInvarincia sob transformaes afim

  • Efeito dos NsOs intervalos entre ns influenciam a importncia dos pontos de controleExemplo: B-spline Qudrica

  • Inserindo NsPodemos ver que as B-splines uniformes em geral no passam pelos pontos de controleEntretanto, se repetirmos ns podemos fazer a curva se aproximar dos pontos de controlePara fazer a interpolao do primeiro ponto usando uma B-Spline cbica, fazemos u0 = u1 = u2 = u3Para fazer uma B-spline cbica passando por 4 pontos podemos usar o vetor de ns: 0, 0, 0, 0, 1, 1, 1, 1De fato, com este vetor de ns, teremos uma Bzier cbica

  • Curvas RacionaisFunes so razesAvaliados em coordenadas homogneas:

    NURBS (Non-Uniform Rational B-Splines): x(t), y(t), z(t) e w(t) so B-splines no uniformesVantagens:Invariantes sob transformaes perspectivas e portanto podem ser avaliadas no espao da imagemPodem representar perfeitamente sees cnicas tais como crculos, elipses, etc

  • Parametrizao de um CrculoPor exemplo, uma parametrizao conhecida do crculo dada por

    Podemos expressar essa parametrizao em coordenadas homogneas por:

  • OpenGL e Curvas ParamtricasOpenGL define o que so chamados de avaliadores que podem avaliar uma curva Bzier para um valor do parmetroPara definir os pontos de controle:glMap1f()Para avaliar um ponto:glEvalCoord(param)Para avaliar uma seqncia de pontos:glMapGrid1f(n, t1,t2)glEvalMesh1f(mode, p1, p2)Essas rotinas avaliam a curva em intervalos regulares no espao de parmetros No necessariamente a melhor maneira!