Splines

Na verdade existem diversos tipos de splines, por comodidade, vamos apresentar aqui apenas o modelo mais comum nas implementações de API gráficas.

As splines podem ser consideradas conjuntos de curvas parametrizadas, no nosso caso curvas de Bézier. A integralização global das curvas de Bézier é um encomodo à modelagem, alterações baixas em um único ponto alteram toda a curva, sendo necessário a solução de um sistema de equações extremamente complicado para resolver este problema (este assunto não será bordado aqui). As splines, sendo conjuntos de segmentos, reduzem este problema. Antes de examinar o porque, avaliemos as segintes curvas:


Ilustração 1: Splines e Bézier representando uma curva - André Claudino




A esquerda temos uma spline formada por um conjunto de linhas de Bézier aproximando uma curva de Bézier integralizada1. Ela pode ser bem aproximada para a idéia que buscamos (no caso de um sistema de modelagem, não se faz necessário conhecer um modelo para trabalhar com o outro já que o usuário escolhe o modelo que deseja). A situação de alterar um ponto numa curva permanece, porem agora, alterar um ponto numa “sub curva” da spline tem efeito apenas na spline a qual este ponto pertence (a menos que seja um ponto compartilhado2). A continuidade C² se faz garantida (no caso específico das splines por curvas de Bézier).

Na nossa implementação, não faz sentido um conceito de “spline linear”, pois a interpolação linear é independente para cada par de pontos consecutivos (n.a.3). como será visto posteriormente, pela solução do problema da influência global, as splines permitem facilidade no recorte de segmentos (curvos4), que é o que nos importa, já que no caso de segmentos retos é trivial.

A implementação de splines de Bézier no projeto se baseia simplesmente no seqüenciamento de curvas, as mesmas funções usadas para avaliar e desenhá-las são utilizadas. Porém, por ser um conjunto de curvas, é interessante ordená-las, isso foi implementado da seguinte maneira:



1Entenda-se por integralizada, uma curva cujos pontos de controle são todos equacionados numa única parametrização.

2Entenda-se por ponto compartilhado um ponto de uma spline pertinente a dois segmentos consecutivos

3Nota do autor: seria interessante avaliar a interpolação linear como um caso de spline de segmentos de reta, ainda que possa parecer pouco produtivo a princípio.

4Segmentos curvos são concebidos como segmentos entre um par de ponto (consecutivos ou não) que participam de uma curva.