Fundamentos da B-spline racional não uniforme (NURBS)

9

Estou tentando entender as curvas NURBS (superfícies mais tarde!), Mas tenho alguns problemas para entender o básico de seu funcionamento interno. Alguém poderia me explicar algumas coisas? Como venho das curvas de Bezier, uma comparação entre essas duas seria especialmente útil.

  1. A "função de base racional" se parece um pouco com o polinômio de Bernstein da curva (racional) de Bezier. O parâmetro utambém varia de 0 a 1?

  2. Como "adicionar detalhes" a uma curva? Quero dizer, com Beziers, se precisasse descrever uma forma mais complicada, simplesmente "costuraria" vários Beziers. Ou com menos frequência, aumente o grau. Entendo que também posso aumentar o grau de NURBS e colocar várias curvas NURBS lado a lado, mas é assim que deve ser feito?

  3. O artigo da Wikipedia, pelo menos para mim, não parece muito claro sobre esse "vetor de nó". O que é isso afinal?

Ecir Hana
fonte
Isso é demais para uma pergunta. Eu posso resumir minha palestra introdutória sobre o assunto em poucas horas. Pouco entrando em detalhes sobre o uso de De casteljanu e o algoritmo de de boor levaria muito tempo.
Joojaa
11
Então, eu gostaria de ver as perguntas 3, 5 e possivelmente 6 divididas em perguntas separadas para tornar a resposta e a compreensão mais dimensionadas para as refeições.
joojaa
@joojaa Claro, eu posso dividir a pergunta, apenas um segundo ...
Ecir Hana
11
Assim, as perguntas 3 , 5 e 6 foram separadas para separar as perguntas.
Ecir Hana

Respostas:

7

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.

insira a descrição da imagem aqui

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.

insira a descrição da imagem aqui

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.

insira a descrição da imagem aqui

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).

insira a descrição da imagem aqui

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.

insira a descrição da imagem aqui

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.

joojaa
fonte
em relação a (*), as curvas de Bezier têm o mesmo problema. A questão é que as curvas (em ambos os casos) são definidas como x = f (t), y = f (t). No entanto, você também pode definir uma curva univariada / explícita / 1 dimensional (novamente, em ambos os casos) como y = f (x), usando x no lugar de t. No caso de curvas racionais, em vez de poder representar seções cônicas, você pode representar seno e cosseno (e mais, é claro). NURBS / b-splines não são especiais nesse sentido.
Alan Wolfe
Penso que a sua declaração sobre o comprimento está errado (só funciona com funções lineares?), E não sabe como cálculos de comprimento deve caber no seu explicação (boas informações que você deu, só estou dizendo!)
Alan Wolfe
@AlanWolfe eliminado de qualquer maneira
joojaa
Mais incrível! Muito obrigado, muito boa explicação!
Ecir Hana
Erro de digitação, talvez? "Em vez disso, a superfície subjacente tem um intervalo de parâmetros personalizável. O parâmetro é armazenado em algo chamado nó, e cada nó pode ter um valor arbitrário que é maior que o próximo." -> "Em vez disso, a curva subjacente possui uma faixa de parâmetros personalizável. O parâmetro é armazenado em algo chamado nó, e cada nó pode ter um valor arbitrário maior que o anterior ." Btw., Você poderia esclarecer o que você quer dizer com "faixa UV"? "UV" implica 2D ..?
Ecir Hana