t
É fácil dividir a curva de Bezier em duas partes em algum parâmetro, graças ao algoritmo de De Casteljau .
Existe um algoritmo semelhante para curvas NURBS? Como dividir uma curva NURBS?
t
É fácil dividir a curva de Bezier em duas partes em algum parâmetro, graças ao algoritmo de De Casteljau .
Existe um algoritmo semelhante para curvas NURBS? Como dividir uma curva NURBS?
Respostas:
A maneira como as curvas NURBS são normalmente divididas em um ponto arbitrário é pela inserção do nó . Você insere nós no ponto de divisão até atingir a multiplicidade máxima; nesse ponto, você pode apenas ler as duas curvas de divisão.
No entanto, você pode não querer dividir em um ponto arbitrário. Se o objetivo final é desenhar as curvas ou algo parecido, vale a pena dividir a curva nos pontos de nó existentes (ou seja, executar a inserção do nó até que todos os nós estejam na multiplicidade máxima) em vez de inserir novos.
Este processo divide os NURBS em B-splines racionais uniformes . Depois disso, você pode usar o algoritmo de de Boor para dividir ainda mais.
O número de nós no vetor de nó é:
numKnots = degreeOfCurve + numControlPoints + 1
ou se você preferir:
numKnots = orderOfCurve + numControlPoints
Inserir um nó aumenta o número de pontos de controle em um.
À medida que você percorre uma curva NURBS, cada nó representa um local onde um ponto de controle "cai" e outro "entra". Se um valor de nó é repetido, isso significa que mais de um ponto de controle é substituído neste local.
Para uma curva de grau maior que 1, os e os últimos nós são repetidos várias vezes por um motivo simples: você precisa inserir mais de um ponto para começar e ejetar mais de um ponto para terminar.
Vamos pensar em curvas cúbicas no momento, apenas para manter as coisas simples.
Uma curva com o vetor de nó [0,0,1,1] é uma curva B-spline uniforme.
Uma curva com o vetor de nó [0,0,1,1,2,2] não é uniforme, mas pode ser vista como duas curvas uniformes de B-spline que se conectam em t = 1, uma correspondente a [0,0 , 1,1] e um correspondente a [1,1,2,2]. Você pode fazer isso porque a multiplicidade dos nós é suficiente para "iniciar" e "terminar" uma curva cúbica.
Se você se deparar com uma curva com um vetor de nó como [0,0,1,2,2], poderá inserir um nó em 1 sem alterar a forma da curva (este é o procedimento de inserção do nó). Isso aumenta o número de pontos de controle em um; o procedimento de inserção do nó ajusta os pontos ao redor do novo nó para acomodá-lo. Mas depois de fazer isso, você tem duas curvas uniformes de B-spline.
A inserção do nó não criará pontos de controle sobrepostos, a menos que você insira muitos nós no mesmo local e, por "muitos", quero dizer o grau da curva. Portanto, para uma curva cúbica não uniforme, você deve inserir nós para que cada nó tenha multiplicidade 2. Isso fornece várias curvas cúbicas uniformes, que você pode usar o algoritmo de de Boor para dividir ainda mais.