Construção de Casteljau · pesos de Bernstein

Curva de Bézier

Uma curva de Bézier nasce ao tomar a mesma fração t em cada lado de um polígono, depois em cada lado do novo polígono, mais curto, até restar um só ponto. À medida que t vai de 0 a 1, esse ponto desenha a curva.

As curvas de Bézier nesta visualização

Uma curva de Bézier de grau n é definida por n + 1 pontos de controlo P0,…,PnP_0, \dots, P_n: dois pontos dão um segmento, três uma curva quadrática e quatro a cúbica dos programas de desenho. O seu ponto B(t)B(t), a vermelho na imagem, obtém-se tomando repetidamente a fração t ao longo de cada lado do polígono de controlo. Aqui podes mover os pontos, fazer t percorrer os valores de 0 a 1 e ver os segmentos da construção deixarem fios que delineiam a curva.

Construção mostra os polígonos de cada nível para o valor atual de t, cada um com menos um lado do que o anterior. Varrer faz t avançar de 0 a 1, deixando fios da construção a intervalos iguais de t, coloridos de acordo com t. A curva propriamente dita é a linha fina.

Escrita por extenso, a construção é uma sequência de médias ponderadas: o algoritmo de Casteljau.

Pi0=Pi,Pik(t)=(1−t) Pik−1(t)+t Pi+1k−1(t),B(t)=P0n(t).P_i^0 = P_i, \qquad P_i^k(t) = (1 - t)\,P_i^{k-1}(t) + t\,P_{i+1}^{k-1}(t), \qquad B(t) = P_0^n(t) .

Ao desenvolver os sucessivos níveis, cada ponto de controlo fica com uma soma de produtos de n fatores, sendo cada fator 1 − t ou t. Para PiP_i, cada produto tem exatamente i fatores t, e existem (ni)\binom{n}{i} produtos desses, pelo que

B(t)=∑i=0nbi,n(t) Pi,bi,n(t)=(ni)ti(1−t)n−i.B(t) = \sum_{i=0}^{n} b_{i,n}(t)\, P_i, \qquad b_{i,n}(t) = \binom{n}{i} t^{i} (1 - t)^{n-i} .

Estes pesos são os polinómios de Bernstein, representados no pequeno gráfico. Para 0≤t≤10 \le t \le 1, nunca são negativos e a sua soma é 1, pelo que B(t)B(t) é uma média ponderada dos pontos e a curva nunca sai do seu invólucro convexo. Deslocar um ponto PiP_i por um vetor Δ desloca cada ponto da curva por bi,n(t) Δb_{i,n}(t)\,\Delta, com o maior deslocamento perto de t=i/nt = i/n. Essa parte da curva nem sempre é a mais próxima do ponto de controlo.

Em t = 0, todos os níveis começam em P0P_0, pelo que B(0)=P0B(0) = P_0; do mesmo modo, B(1)=PnB(1) = P_n. A curva passa pelas suas duas extremidades e, normalmente, não passa pelos outros pontos. O último nível da construção é um único segmento que, a menos que se reduza a um ponto, está sobre a tangente à curva:

B′(t)=n(P1n−1(t)−P0n−1(t)),B′(0)=n (P1−P0),B′(1)=n (Pn−Pn−1).B'(t) = n \bigl(P_1^{n-1}(t) - P_0^{n-1}(t)\bigr), \qquad B'(0) = n\,(P_1 - P_0), \qquad B'(1) = n\,(P_n - P_{n-1}) .

Assim, a curva parte de P0P_0 em direção a P1P_1 e chega a PnP_n vindo da direção de Pn−1P_{n-1}, exceto se os dois pontos dessa extremidade coincidirem. É por isso que um programa de desenho mostra os pontos intermédios de uma cúbica como alças que partem das extremidades.

Cada fio do último nível que não seja apenas um ponto é tangente à curva no ponto que transporta. Um fio do nível abaixo é tangente, da mesma forma, à curva definida por menos pontos vizinhos. Assim, cada família de fios delineia a sua própria curva, e as curvas de grau inferior aparecem dentro do polígono. Delinear não é envolver apenas de um lado: onde há uma inflexão, a curva atravessa a sua própria tangente e os fios ficam dos dois lados. Quando os três pontos de controlo não estão alinhados, os fios de uma quadrática correspondem a um desenho com fio passado entre duas filas retas de pregos, e a curva que delineiam é uma parábola.

A construção em t = s também corta a curva em duas partes. Os primeiros pontos dos seus níveis são os pontos de controlo do trecho de 0 a s, e os últimos são os do trecho de s a 1, como mostra Dividir. Ao cortar repetidamente ao meio, os polígonos dos trechos aproximam-se da curva. Elevar grau segue o caminho inverso: mais um ponto de controlo, a mesma curva e um polígono mais próximo dela. Já um ponto acrescentado ao premir a imagem altera a curva.

Paul de Casteljau desenvolveu a construção na Citroën em 1959. Pierre Bézier chegou de forma independente às mesmas curvas na Renault e publicou-as na década de 1960.

O que observar

  • Passos iguais de t não têm de corresponder a distâncias iguais ao longo da curva.
  • A zona de coloração mais intensa não é a curva. É onde os fios mais se sobrepõem, o que pode acontecer um pouco ao lado da curva.

Relacionados