B-Splines e Beziers são invenções paralelas de mais ou menos a mesma coisa. Onde Beziers tenta começar com a idéia de ajustar tangentes. B-Splines começam com a ideia de funções básicas. NURB Splines (ou a parte racional de fato) são apenas generalizações de B-Splines, para que você possa descrever seções cônicas precisas *, pois são de especial interesse em engenharia.
Primeiro, vamos começar com uma simples terminologia NURB Spline. A lógica dessas curvas é um pouco diferente da de Beziers. Primeiro, há o conceito de extensão. Uma extensão seria aproximadamente equivalente a uma spline de Bezier inteira, exceto em nurbs, você pode ter qualquer número de extensões.
Imagem 1 : Uma extensão NURBS cúbica. Isso é um pouco atípico na formulação
Cada amplitude é formada pelo grau da curva + 1 pontos de controle **. Cada curva pode consistir em qualquer número de pontos. Cada período consecutivo reutiliza os pontos do período anterior, largando um ponto e levando mais um ponto na lista. Portanto, fazer curvas mais complexas é tão fácil quanto acrescentar mais pontos à curva.
NOTA : As curvas das imagens são um pouco atipicamente parametrizadas, explicando mal o que isso significa na próxima seção. Quando tomo o conceito de nós. Essa é apenas uma maneira mais fácil de explicar como as curvas se colam.
Imagem 2 : 2 vãos cúbicos um após o outro, cada vão usa 4 pontos. juntos eles formam uma curva. Eles compartilham muitos pontos entre si.
Até agora, provavelmente já respondemos à 2 pergunta sobre adição de complexidade. Mas eu gostaria de acrescentar que esse esquema garante melhor continuidade do que uma curva mais bezier. Além disso, você pode fazer a matriz de pontos que forma o casco cíclico. Formando uma curva fechada.
Imagem 3 : Uma superfície NURBS cúbica fechada tem tantos vãos quanto pontos. Cada cor é uma extensão.
Parametrização
Até esse ponto, pode-se dizer que unir os vãos é um truque, assim como "costurar" as curvas de Bezier. Mas há uma diferença. A curva é parametrizada ao longo de seu comprimento. Portanto, as curvas não são separadas, elas não interpolam o formulário de 0 a 1 em cada intervalo, como Beziers. Em vez disso, a curva subjacente possui um intervalo de parâmetros personalizável. O parâmetro é armazenado em algo chamado nó, e cada nó pode ter um valor crescente arbitrário na sequência. Assim, você pode parametrizar as curvas inteiras para 0 - 1 ou 0 a 12. A parametrização também não precisa ser uniforme.
Essa parametrização altera a forma da curva. Por que isso seria útil? Bem, você pode ajustar a tensão ao longo da curva para um. Ou você pode codificar o comprimento da curva no parâmetro U Um uso peculiar é fazer com que a curva NURBS atue como uma curva de Bezier, total ou apenas parcialmente (bezier como nas extremidades, mas não no meio, por exemplo).
Imagem 4 : Mesmos pontos em diferentes seqüências de nós. A curva NURBS verde corresponde a uma curva de Bezier que possui um intervalo de parâmetros de 0-2 em vez de 0-1
Ok, então quais são os nós? Eles são simplesmente os intervalos das funções básicas. Como o b-spline cúbico com 4 pontos tem 4 funções de interpolação, ele precisa de 8 nós. Somente áreas onde três funções se sobrepõem e somam 1,0 podem ser desenhadas uma linha.
Imagem 5 : 2 funções básicas diferentes, como um bezier e uma parametrização de segmento uniforme, se espalham para a faixa de 0-1.
E agora descrevemos principalmente a resposta à pergunta 1. O intervalo não está definido. Você pode esticar as funções básicas como achar melhor. E, finalmente, o vetor de nó simplesmente produz os intervalos de parâmetros para as funções básicas. Ainda há mais uma coisa que governa a forma da curva e esse é o vetor de peso. Mas essa outra história a ser contada em outro lugar.
* Esse racional nesse caso significa que uma curva NURBS não precisa ser um polinômio, pois você não pode descrever um círculo com polinômios.
** Pode-se definir outros tipos de pontos.