Algoritmo de De Casteljau

Fonte: testwiki
Saltar para a navegação Saltar para a pesquisa

O Algoritmo de De Casteljau na matemática, no campo da análise numérica, é um método recursivo para calcular polinômios na forma de Bernstein ou da Curva de Bézier. Chamado assim por causa do seu criador Paul de Casteljau.[1] Esse algoritmo pode ser usado também para dividir uma única curva de Bézier em duas, recebendo um valor arbitrário como parâmetro.

Embora seja um pouco mais lento, para a maior parte das arquiteturas, quando comparado com abordagens diretas, esse algoritmo se mostra numericamente estável. É amplamente usado, com algumas modificações, como o mais robusto e numericamente estável método para calculo de polinomiais.

Definição

Uma curva de Bézier B (de grau n) pode ser escrita na forma de Bernstein como se segue

B(t)=i=0nβibi,n(t),

onde b é um Polinômio de Bernstein

bi,n(t)=(ni)(1t)niti.

A curva no ponto t0 pode ser calculada com a relação de recorrência

βi(0):=βi , i=0,,n
βi(j):=βi(j1)(1t0)+βi+1(j1)t0 , i=0,,nj , j=1,,n

Então, a estimativa de B no ponto t0 pode ser calculada em n passos do algoritmo. O resultado B(t0) é dado por:

B(t0)=β0(n).

Além disso, a curva de Bézier B pode ser dividida no ponto t0 em duas curvas com respectivos pontos de controle:

β0(0),β0(1),,β0(n)
β0(n),β1(n1),,βn(0)

Notas

Ao fazer os cálculos manualmente, é útil escrever os coeficientes em um esquema de triângulo como abaixo

β0=β0(0)β0(1)β1=β1(0)β0(n)βn1=βn1(0)βn1(1)βn=βn(0)

Ao escolher um ponto t0 para calcular o polinomial de Bernstein pode-se usar as duas diagonais do esquema de triângulo para construir um divisão da polinomial

B(t)=i=0nβi(0)bi,n(t) , t[0,1]

em

B1(t)=i=0nβ0(i)bi,n(tt0) , t[0,t0]

e

B2(t)=i=0nβi(ni)bi,n(tt01t0) , t[t0,1]

Exemplo

Deseja-se calcular o polinomial de Bernstein de grau 2 os coeficientes de Bernstein

β0(0)=β0
β1(0)=β1
β2(0)=β2

no ponto t0.

Nós iniciamos a recursão com

β0(1)=β0(0)(1t0)+β1(0)t0=β0(1t0)+β1t0
β1(1)=β1(0)(1t0)+β2(0)t0=β1(1t0)+β2t0

a com a segunda iteração da recursão parando com

β0(2)=β0(1)(1t0)+β1(1)t0 =β0(1t0)(1t0)+β1t0(1t0)+β1(1t0)t0+β2t0t0 =β0(1t0)2+β12t0(1t0)+β2t02

que é o esperado polinômio de Bernstein de grau 2.

Curva de Bézier

Ao calcular uma curva de Bézier de grau n no espaço 3 dimensional com n+1 pontos de controle p i

𝐁(t)=i=0n𝐏ibi,n(t) , t[0,1]

com

𝐏i:=(xiyizi).

nós dividimos a curva de Bézier em três equações separadas

B1(t)=i=0nxibi,n(t) , t[0,1]
B2(t)=i=0nyibi,n(t) , t[0,1]
B3(t)=i=0nzibi,n(t) , t[0,1]

que calculamos individualmente usando o algoritmo de De Casteljau.

Interpretação geométrica

A interpretação geométrica do algoritmo de De Casteljau é simples.

  • Considerando uma curva de Bézier com pontos de controle P0,...,Pn. Conectando os pontos consecutivos, nós criamos o polígono de controle da curva.
  • Sudividindo agora cada segmento deste polígono com relação t:(1t) e conectando os pontos, se consegue. Desta forma você vai conseguir o novo polígono tendo menos um segmento.
  • Repita o processo até conseguir chegar a um único ponto - este é o ponto da curva correspondente ao parâmetro t.

A seguinte figura mostra o processo para um curva cúbica de Bézier:

Note que os pontos intermediários que foram construídos são de fato os pontos de controle para duas novas curvas de Bézier, ambas exatamente coincidente com a antiga. Este algoritmo não somente calcula a curva em t, mas divide a curva em duas partes em t, e fornece as equações das duas sub-curvas na forma de Bézier.

A interpretação dada acima é válida para uma curva de Bázier não-racional. Para calcular um curva de Bézier racional em 𝐑n, nós podemos projetar o ponto em 𝐑n+1; por exemplo, uma curva em três dimensões pode ter seus pontos de controle {(xi,yi,zi)} e cargas {wi} projetadas para os pontos de controle ponderados {(wixi,wiyi,wizi,wi)}. O algoritmo então segue como usual, interpolando em 𝐑4. Os pontos de quatro dimensões resultantes podem ser projetados de volta no espaço 3D com uma pelo inverso (divisão homogênea).

Em geral, operações em uma curva racional (ou superfície) são equivalente a operações em uma curva não-racional em um espaço projetivo. Esta projeção como a "pontos de controle ponderados" e cargas é frequentemente conveniente ao calcular curvas racionais.

Predefinição:Referências

Bibliografia

  • Farin, Gerald & Hansford, Dianne (2000). The Essentials of CAGD. Natic, MA: A K Peters, Ltd. ISBN 1-56881-123-3
  • Weisstein, Eric W. "Bézier Curve." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/BezierCurve.html

Ver também

  1. Teoria Local das Curvas, Roberto Simoni (2005), p. 53, página visitada em 4 de fevereiro de 2014.