Ciao Fabio
se fosse come dici tu tutte le nurbs con vettore dei knot non uniformi non avrebbero continuità parametrica. Proseguo con il tuo esempio. Sia ad esempio:
dist(P3-P2) = 1
dist(Q1-Q0) = 3
Costruisci la nurbs
CP = {P0,P1,P2,Q1,Q2,Q3}
Knot = {0,0,0,1,1,4,4,4}
Si riscontrerà la perfetta coincidenza delle 3 curve.
Come si nota la prima bezier viene parametrizzata 0 - 1 mentre la seconda 1 - 4.
In altri termini poco formali visto che la seconda curva è tre volte più “veloce” della prima gli triplichiamo la lunghezza da percorrere.
Continuando, se si calcolano le derivate seconde e il rapporto tra i due moduli è ancora pari a 3 allora è possibile rimuovere un knot 1 e si otterrà la medesima curva.
Se poi si calcola la derivata terza e se risulta che il rapporto tra i due moduli è pari a 3 si deduce che le due bezier sono state originate da una bezier splittata alla coordinata parametrica 1/4=0.25.
Prova con qst curve
array(0, 1, 0), array(1, 0, 0), array(3, 0, 0), array(3, 1, 0)
array(3, 1, 0), array(3, 3, 0), array(5, 3, 0), array(5, 1, 0))
Di seguito lo script per generare la nurb.
Dim strObject, arrPoints, arrKnots, intDegree
arrPoints = array(array(0, 1, 0), array(1, 0, 0), array(3, 0, 0), array(3, 3, 0), array(5, 3, 0), array(5, 1, 0))
arrKnots = array(0, 0, 0, 1, 1, 3, 3, 3)
intDegree = 3
strObject = Rhino.AddNurbsCurve(arrPoints, arrKnots, intDegree)
Per finire, è chiaro che la continuità parametrica è più forte della continuità geometrica. Ma questo concetto ritengo valga per le superfici dove il dominio parametrico è due dimensionale. …
Mi fermo qui sperando di non aver detto troppe cavolate.
Un saluto
Sergio
EDIT
Forse creando la nurbs
CP = {P0,P1,P2,P3,Q1,Q2,Q3}
Knot = {0,0,0,1,1,1,4,4,4}
e quindi rimuovendo in rhino un knot 1 il tutto potrà risultare più chiaro: si vedrà scomparire il punto di controllo P3.