Curvas de Bezier
As curvas de bezier são linhas curvas geradas através de binómios, podendo ter quantos pontos de inflexão o programador desejar e sendo criada por um determinado número de pontos.
Linhas simples
Considerem que querem criar uma linha que ligue um ponto A(x1,y1) a um ponto B(x2,y2). Tendo uma variável a, sendo que \(0 \leq a \leq 1\), é possível criar essa linha da seguinte forma:
para (a=0, a<1, a=a+k) {
b=1-a
x=b*x1+a*x2
y=b*y1+a*y2
}
sendo x e y as coordenadas de um dos pontos da linha e sendo que quanto menor for k maior será o número de pontos que constitui, sendo a linha constituída por 1/k pontos.
Curvas
Depois de entender como fazer uma linha, está na altura de entender como fazer uma curva. A primeira coisa a decidir é o número de pontos de inflexão desejados.
Curvas com um ponto de inflexão
Considerando que queremos criar uma curva entre A(xA,yA) e C(xC,yC) com um ponto de inflexão definido pelo ponto B(xB,yB). Importante: O ponto de inflexão não está em B, B apenas serve para o definir, como pode ser visto na imagem: http://www.gamedev.net/reference/programming/features/curvessurfaces/curveQuadratic.gif
O que teremos é um código muito semelhante ao anterior, só que em vez de usarmos um polinómio de primeiro grau (b+a), utilizamos um polinómio de 2º grau (b²+2ba+a²), sendo que o nosso código passa a ser:
para (a=0, a<1, a=a+k) {
b=1-a
x=b^2*xA+2*a*b*xB+a^2*xC
y=b^2*yA+2*a*b*yB+a^2*yC
}
Curvas com mais do que um ponto de inflexão
Para utilizar mais pontos de inflexão, é só usar um polinómio da forma (a+b)^k, sendo k-1 o número de pontos de inflexão. Para deduzir o polinómio é aconselhável usar o Binómio de Newton
Nota: É de notar que nas curvas de Bezier quanto maior for o número de pontos de inflexão, menores estes se tornam, tornando a curva cada vez mais próxima de uma recta. Para resolver este problema é necessário usar outras técnicas mais avançadas.