As curvas de Bézier são uma das ferramentas mais comuns para desenhar trajetórias suaves em computação gráfica, movimento em interfaces de usuário, ilustração vetorial e renderização de fontes. Mesmo quando uma curva parece feita à mão livre, muitos sistemas a representam com um pequeno conjunto de pontos de controle e uma equação determinística. Isso torna as curvas de Bézier ao mesmo tempo expressivas e confiáveis: artistas e engenheiros podem moldar movimento e geometria com apenas alguns valores.
Este artigo desenvolve uma compreensão prática desde os fundamentos. Você começará com o caso quadrático, conectará a posição dos manipuladores com a direção tangente, comparará diretamente o comportamento dos manipuladores quadrático e cúbico e, em seguida, inspecionará como o algoritmo de De Casteljau calcula pontos em qualquer tipo de curva. Antes de entrar na notação, comece com o comportamento básico: um manipulador móvel altera uma curva suave entre dois pontos fixos.
Arraste o manipulador azul para reformatar a curva enquanto os dois pontos escuros permanecem fixos. O polígono de controle tracejado mostra a estrutura linear que guia a trajetória suave. Mover o manipulador para mais longe do segmento extremo cria um arco mais acentuado, enquanto aproximá-lo achata a curva.
Pontos de Controle das Curvas de Bézier
Uma curva de Bézier é definida por pontos de controle. A curva começa no primeiro ponto de controle e termina no último ponto de controle. Os pontos intermediários geralmente não estão sobre a curva. Em vez disso, eles puxam a direção da curva e o quanto ela se curva. As curvas de Bézier vêm em várias formas, mas este artigo foca nas mais comuns: as curvas de Bézier polinomiais. Nessa família, a quantidade de pontos de controle determina o grau da curva. O polígono de controle é a sequência de segmentos retos que conectam esses pontos. Não é a curva renderizada, mas é a forma mais fácil de ler como a curva sairá do ponto inicial, se curvará no interior e chegará ao ponto final.
Os casos mais comuns são as curvas de Bézier quadráticas e cúbicas. Para uma curva de Bézier quadrática, há três pontos:
- : ponto inicial
- : ponto de controle
- : ponto final
Para uma curva de Bézier cúbica, há quatro pontos:
- : ponto inicial
- : primeiro manipulador
- : segundo manipulador
- : ponto final
Esses pontos de controle interiores geralmente atuam como manipuladores em vez de pontos pelos quais a curva deve passar. Mover um manipulador altera a direção tangente e a intensidade da curvatura enquanto os pontos finais permanecem fixos. Essa é a razão prática pela qual as curvas de Bézier são úteis em ferramentas de desenho, trajetórias de animação e fontes: um conjunto pequeno de pontos fornece geometria suave e previsível.
Fórmula da Curva de Bézier Quadrática
Uma curva de Bézier quadrática utiliza três pontos de controle e um parâmetro . A fórmula utiliza um parâmetro de a :
Você pode interpretar isso como uma combinação ponderada de pontos. Em , todo o peso está em , então o ponto da curva está no início. Em , todo o peso está em , então o ponto da curva está no final. Entre eles, o peso se desloca suavemente e produz uma trajetória contínua.
Esse comportamento suave vem do fato de que os pesos são polinômios em . À medida que muda, o ponto na curva se move continuamente em vez de saltar de um local para outro.
Exploração da Forma Quadrática
Vale a pena revisitar a mesma curva editável agora que os rótulos dos pontos têm significado. Esta é a forma de Bézier mais simples: dois pontos finais fixos e um ponto de controle móvel. A curva começa em , termina em e se curva em direção a . À medida que o manipulador azul se move, o polígono de controle mostra o arcabouço linear enquanto a curva mostra o resultado suavizado. Afastar do segmento de a faz com que a trajetória se arquee fortemente; aproximá-lo desse segmento achata a curva sem mover nenhum dos pontos finais.
A curva geralmente não passa por . Em vez disso, os dois segmentos conectados a estabelecem as direções no início e no final da curva. Mover o manipulador portanto altera tanto a quantidade de curvatura quanto a forma como a curva sai de e chega em . É por isso que as curvas de Bézier são úteis: você pode direcionar a forma indiretamente e manter a suavidade. Essas mesmas ideias também levam a propriedades formais como a contenção no invólucro convexo e a invariância afim, que as notas de construção da Michigan Tech explicam com mais detalhes.
Fórmula da Curva de Bézier Cúbica
A maioria das ferramentas de design e web prefere as curvas de Bézier cúbicas. Uma cúbica tem quatro pontos de controle:
- : início
- : primeiro manipulador
- : segundo manipulador
- : final
Sua equação é:
Comparada à quadrática, a cúbica adiciona mais um manipulador e muito mais controle de forma. Você pode criar curvas em S, transições suaves ou curvas fechadas sem precisar encadear múltiplos segmentos prematuramente. Essa liberdade adicional também introduz comportamentos que as curvas quadráticas não conseguem expressar, incluindo pontos de inflexão e, em algumas disposições de pontos de controle, formas similares a cúspides ou auto-interseções.
A vista comparativa torna o manipulador cúbico adicional visível como uma diferença de controle, não apenas como uma equação de grau superior.
No painel quadrático, arrastar o único manipulador interior altera todo o arco e acopla as direções tangentes de início e fim.
No painel cúbico, mover altera principalmente a saída de , enquanto mover altera principalmente a chegada em .
O controle deslizante Posição de amostra conecta esse comportamento geométrico aos pesos base: três pesos quadráticos se alternam ao longo do trecho, enquanto quatro pesos cúbicos se sobrepõem e dão ao interior da curva mais liberdade.
Mover os dois manipuladores cúbicos para lados opostos da corda de a mostra o benefício prático. Os pontos finais permanecem fixos, mas a curva pode desenvolver uma forma de S porque os dois manipuladores direcionam diferentes partes do segmento. As curvas quadráticas são mais simples e muitas vezes suficientes para um único arco curvo, enquanto as curvas cúbicas permitem ajustar a saída e a chegada de forma mais independente. Esse comportamento local do manipulador é a razão pela qual os editores vetoriais expõem manipuladores de tangente para as âncoras. Cada segmento pode ser ajustado sem redesenhar toda a trajetória manualmente. Se você quiser se aprofundar nessas mudanças qualitativas de forma cúbica, Pomax cobre inflexões e classificações com mais profundidade, e o relatório da Berkeley sobre detecção de cúspides e pontos de inflexão em curvas mostra como essas características derivam da estrutura das derivadas e não de peculiaridades do editor. Se você quiser ver a mesma ideia de curva estendida ao espaço, o artigo complementar sobre visualização de curvas de Bézier 3D e construção de De Casteljau mostra como o polígono de controle, a trajetória amostrada e a escada de interpolação se comportam sob rotação da câmera.
Tangentes e Direção do Movimento
As curvas de Bézier são frequentemente usadas para trajetórias de movimento, não apenas para desenhos estáticos. A vista de manipuladores cúbicos acima torna a ideia da tangente nos pontos finais fácil de ver. Em animação, a direção tangente local importa porque informa para onde um objeto está se movendo naquele instante.
Para uma curva cúbica, a derivada é:
Dois fatos práticos decorrem disso:
- No início (), a direção se alinha com .
- No final (), a direção se alinha com .
É por isso que mover os dois pontos de controle interiores altera como a curva sai e se aproxima dos pontos finais. Em editores vetoriais e de trajetórias de movimento, essas direções tangentes são expostas como manipuladores de direção nos pontos finais, de modo que arrastá-los altera como a trajetória parte e chega.
Quando o movimento precisa parecer natural, a geometria da trajetória por si só não é suficiente. Você também precisa de uma função de temporização para como muda ao longo do tempo. Uma trajetória pode ser suave enquanto a velocidade ainda parece abrupta se a progressão do parâmetro não for suavizada.
Algoritmo de De Casteljau
As equações polinomiais são compactas, mas há outra forma de avaliar curvas de Bézier tanto quadráticas quanto cúbicas: o algoritmo de De Casteljau. Ele calcula um ponto na curva usando interpolação linear repetida, o que significa que cada passo tem a mesma forma simples: mover-se uma fração do caminho de um ponto a outro. Isso é mais fácil de inspecionar e depurar do que uma expressão polinomial maior porque cada ponto intermediário tem um significado geométrico claro.
Para o caso quadrático em um escolhido:
- Interpole entre e para obter .
- Interpole entre e para obter .
- Interpole entre e para obter .
O ponto final é o mesmo que a fórmula quadrática porque a interpolação linear é em si mesma uma soma ponderada. Se e , então interpolar entre eles dá:
Esse lado direito é exatamente a equação da curva de Bézier quadrática da seção de fórmula anterior. A vantagem é que este procedimento de interpolação se estende naturalmente a curvas de grau superior e é numericamente estável em muitas implementações. Isso importa porque o mesmo procedimento geométrico funciona tanto para a curva quadrática quanto para a cúbica.
No modo Quadrática, o controle deslizante de interpolação mostra como um ponto da curva é construído para cada valor de .
À medida que se move de 0.00 para 1.00, desliza entre e , desliza entre e , e o ponto interpolado final traça a curva real.
Mudando para o modo Cúbica adiciona mais uma rodada de interpolação, mas não adiciona um novo tipo de operação: cada ponto continua sendo uma mistura linear entre dois pontos da rodada anterior.
Esta vista de escada dá uma razão geométrica imediata de por que a curva permanece dentro da região convexa formada pelos pontos de controle. Ela também mostra por que De Casteljau é útil para subdivisão, que significa dividir um segmento de Bézier em dois segmentos de Bézier menores no valor atual de . A metade esquerda pode ser construída a partir dos pontos ao longo de um lado da escada de interpolação, e a metade direita a partir dos pontos ao longo do outro lado. O código de renderização utiliza essa divisão quando uma curva está muito curvada para ser desenhada com precisão com um único segmento reto: continua subdividindo até que cada peça menor seja suficientemente plana para ser aproximada. A mesma operação é útil em tesselação adaptativa e testes de colisão. Para um tratamento visual mais aprofundado da divisão, derivadas e subdivisão, A Primer on Bezier Curves continua sendo uma das referências práticas mais sólidas.
Trajetórias de Bézier por Partes e Continuidade
Desenhos reais geralmente não são uma única curva. São cadeias de segmentos de Bézier. Ao conectar segmentos, a continuidade é a principal preocupação de qualidade. Cada segmento pode ser suave internamente, mas a âncora compartilhada entre dois segmentos vizinhos ainda pode criar um canto, uma mudança na velocidade ou uma mudança repentina na curvatura. O rótulo de continuidade descreve o que exatamente coincide nessa junção.
Quatro níveis úteis de continuidade aparecem na prática:
- continuidade: os segmentos se encontram no mesmo ponto.
- continuidade: as direções tangentes coincidem, então a junção parece suave.
- continuidade: as primeiras derivadas coincidem, então a direção e a magnitude tangente são contínuas.
- continuidade: as segundas derivadas coincidem, então a curvatura muda suavemente.
A distinção entre e é fácil de passar despercebida porque ambas podem eliminar o canto visível. Para um segmento cúbico, a tangente no ponto final aponta ao longo da linha do último manipulador até o ponto final, e a tangente do próximo segmento aponta do ponto final compartilhado em direção ao próximo manipulador. Se essas duas linhas de manipuladores são colineares, a junção tem uma direção suave. Se os manipuladores também estão equilibrados para que os vetores derivados tenham a mesma magnitude, a trajetória parametrizada cruza a junção sem um salto na primeira derivada.
A comparação utiliza um nó compartilhado com um segmento cúbico de entrada laranja e um segmento cúbico de saída azul.
No modo C0, as duas curvas se encontram, mas os manipuladores próximos podem apontar em direções não relacionadas, então a junção pode formar um canto.
Mudando para G1 ajusta o manipulador próximo de saída para a mesma linha tangente enquanto mantém sua própria distância da junção; o canto desaparece, mas os dois vetores tangentes ainda podem ter comprimentos diferentes.
No modo C1, o manipulador próximo é refletido através do nó compartilhado, o que faz com que o vetor tangente de saída coincida com o de entrada tanto em direção quanto em magnitude.
O modo C2 adiciona mais uma restrição ao derivar o manipulador de saída distante da geometria do manipulador do segmento de entrada.
Os pequenos pentes de curvatura próximos à junção tornam essa condição mais estrita visível: a coincidência de tangentes controla para onde a curva aponta, enquanto a coincidência de curvatura controla o quão bruscamente a curva está girando ao passar pelo nó.
Essa suavidade adicional é útil para superfícies limpas, trajetórias de câmera e trajetórias de movimento onde uma mudança repentina na curvatura seria perceptível.
Ela também reduz a liberdade de edição, porque mover um manipulador agora força mais parte do segmento vizinho a se mover com ele.
Em muitos fluxos de trabalho de interface de usuário e ícones, ou é a linha de base prática. Se os manipuladores adjacentes estão dispostos como colineares em torno de uma âncora compartilhada, as junções parecem visualmente suaves, e manipuladores equilibrados fazem com que a derivada matemática também coincida. Para superfícies de alta precisão e trajetórias de simulação, restrições de continuidade mais fortes podem importar porque saltos de curvatura podem afetar a aparência, o movimento ou cálculos posteriores. Se você precisar da distinção entre continuidade algébrica e junções visualmente suaves, a nota da Berkeley sobre continuidade geométrica de curvas paramétricas é uma leitura complementar útil.
Casos de Uso Típicos
As curvas de Bézier aparecem em muitos sistemas, frequentemente por trás de editores amigáveis:
- Comandos de trajetória SVG em gráficos web
- Contornos de glifos tipográficos em renderização de texto
- Trilhos de câmera e trajetórias de objetos em ferramentas 3D
- Curvas de suavização
cubic-bezier()em CSS para linhas do tempo de animação - Ferramentas de interpolação de formas em software de ilustração
Embora as interfaces difiram, o conceito subjacente é o mesmo: os pontos de controle definem trajetórias suaves com comportamento previsível nos pontos finais. A especificação de trajetórias SVG é a referência autoritativa sobre como comandos de trajetória quadráticos e cúbicos são representados em formatos de produção.
Esses formatos de produção podem parecer sucintos, mas codificam a mesma geometria mostrada ao longo do artigo. Um comando de trajetória quadrático armazena um manipulador entre dois pontos finais; um comando de trajetória cúbico armazena dois. Quando você inspeciona ou edita uma trajetória SVG, ainda está decidindo para onde as tangentes dos pontos finais apontam, com que força os manipuladores puxam e como os segmentos vizinhos devem se encontrar.
Depois que você consegue ler o polígono de controle, as curvas de Bézier deixam de parecer abstratas. Os manipuladores mostram como a trajetória vai se curvar, a interpolação explica cada ponto entre os extremos, e desenhos complexos se tornam cadeias de decisões de curva menores que podem ser inspecionadas um segmento de cada vez.