Un saluto a tutti.
Tempo fa, l’amico @luca.filippone aveva postato alcune osservazioni in merito alla modellazione di Classe A.
Partendo da indicazioni ottenute da una persona esperta di sua conoscenza, Luca sosteneva la tesi che, per la modellazione di Classe A, fosse preferibile l’utilizzo di curve di Bézier a span singolo.
Ricordo che si era sollevato un piccolo polverone e si era ragionato quasi tutti sul fatto che una Basis Spline ben costruita avrebbe potuto svolgere lo stesso lavoro, con tutti i vantaggi tipici delle spline multi-span.
E, a dire il vero, continuo a ritenere che questo sia sostanzialmente corretto.
Tuttavia, col tempo, ho rivalutato parecchio la questione e credo mi fossero sfuggiti alcuni aspetti matematici e geometrici che meritano un’analisi più attenta.
Mi sono in sostanza convinto che la questione non fosse da liquidare troppo rapidamente e che dietro la preferenza per le strutture Bézier esista una logica molto più profonda di quanto sembri a prima vista.
Condivido quindi alcune considerazioni che mi sono venute in mente.
Credo che, per comprendere perché la modellazione di Classe A caldeggi spesso l’uso di curve Bézier a span singolo anziché affidarsi a spline multi-span, sia necessario superare l’intuizione puramente visiva del monitor.
Per evitare di infilarmi in discussioni da tifoseria sul fatto che “questa curva sia migliore di quell’altra”, proverò a ragionare in termini geometrici e analitici.
Ho riflettuto sul fatto che l’occhio umano, e soprattutto la luce che si riflette su una superficie, non reagiscono realmente alla posizione spaziale della curva, bensì all’andamento della sua curvatura e alla regolarità con cui tale curvatura varia lungo il profilo.
La curvatura \kappa(t) di una curva parametrica piana C(t)=(x(t),y(t)) è definita da:
\kappa(t)=\frac{x'(t)y''(t)-y'(t)x''(t)}{(x'(t)^2+y'(t)^2)^{3/2}}
I punti in cui il numeratore N(t)=x'(t)y''(t)-y'(t)x''(t) si annulla rappresentano i flessi, cioè i punti in cui la curva cambia concavità.
Tuttavia, le imperfezioni ottiche di una superficie non dipendono soltanto dai flessi.
Anzi, nella pratica della Classe A il problema principale è spesso un altro: piccole oscillazioni locali dell’intensità della curvatura che non arrivano nemmeno a invertire il segno della concavità, ma che producono comunque irregolarità nei riflessi.
Il cosiddetto wobble nasce molto più frequentemente da variazioni troppo rapide della curvatura che da veri cambi di concavità.
In altre parole, ciò che disturba il riflesso non è tanto il valore assoluto della curvatura, ma la velocità con cui essa accelera o rallenta localmente.
Qui entra in gioco un aspetto interessante.
La curvatura dipende già dalle derivate seconde della curva.
La variazione della curvatura dipende quindi dalla derivata della curvatura stessa, cioè da quantità che coinvolgono le derivate terze.
La regolarità con cui questa variazione evolve coinvolge inevitabilmente anche derivate quarte.
E se si vuole analizzare quanto bruscamente tali variazioni possano cambiare lungo la parametrizzazione, compaiono inevitabilmente anche derivate quinte.
Questo non significa che “la derivata quinta governi direttamente la fairness”, sarebbe una semplificazione impropria.
Piuttosto significa che, aumentando il grado di continuità delle derivate alte, si riduce progressivamente la possibilità che il comportamento della curvatura cambi in modo troppo brusco da una regione all’altra della curva.
Ed è qui che il discorso sulle spline multi-span diventa interessante.
Una curva Bézier singolo-span è descritta da un unico polinomio globale definito sull’intero intervallo parametrico.
Se la curva ha grado n, le sue derivate successive riducono progressivamente il grado polinomiale ma rimangono comunque parte di un’unica struttura globale.
Qualunque modifica ai punti di controllo si distribuisce quindi lungo tutta la curva.
Questo aspetto ha una conseguenza importante: la deformazione geometrica tende naturalmente a distribuirsi in modo ampio e progressivo.
La curva possiede certamente libertà di oscillazione, soprattutto ai gradi elevati, ma tali oscillazioni devono necessariamente svilupparsi all’interno di un unico sistema globale di vincoli.
Una Basis Spline, invece, è una struttura piecewise.
Ogni span è descritto da un polinomio distinto raccordato agli span adiacenti tramite condizioni di continuità sui nodi.
Ed è proprio qui che nasce la differenza fondamentale.
La continuità matematica imposta sui nodi è un vincolo puntuale, garantisce che in quel preciso punto le derivate coincidano, ma non impone direttamente alcun vincolo sulla distribuzione energetica della deformazione all’interno dello span.
In altre parole, due segmenti possono raccordarsi in maniera perfettamente continua in C^2, C^3 o persino superiore, ma sviluppare comunque piccole variazioni locali della curvatura immediatamente prima o dopo il nodo.
Il grafico di curvatura può quindi presentare leggere creste, avvallamenti o accelerazioni locali pur in presenza di continuità matematicamente impeccabile.
Questo è un punto che spesso genera confusione: continuità e fairness non sono sinonimi.
La continuità riguarda il raccordo locale delle derivate.
La fairness riguarda invece il comportamento globale e percettivo della variazione di curvatura, sono concetti correlati, ma non equivalenti.
Nelle curve Bézier il problema tende naturalmente a ridursi perché non esistono nodi interni, la curva non deve compensare transizioni locali tra polinomi differenti.
L’intera deformazione viene assorbita globalmente.
Per rendere l’analisi concreta, ho considerato una curva di Bézier di grado n=5 e una B-Spline di grado n+1=6, alla fine giustificherò questa scelta.
Nel caso della curva di Bézier di grado cinque, il numeratore della curvatura diventa un unico polinomio globale di grado massimo (n-1)+(n-2)=2n-3, ovvero un polinomio di grado sette distribuito sull’intera lunghezza della curva.
Essendo una funzione unica e globale, la distribuzione delle sue oscillazioni è rigidamente vincolata dal poligono di controllo.
La curva può ovviamente avere variazioni teoriche di intensità, ma tali fluttuazioni risultano necessariamente distribuite e diluite sull’intera estensione geometrica e difficilmente potranno concentrarsi localmente.
La situazione cambia invece profondamente con la B-Spline di grado sei.
All’interno di ciascun tratto il numeratore della curvatura raggiunge il grado n+(n-1)=2n-1, che nel caso di una spline di grado sei significa che ogni singolo segmento è governato da un polinomio di inflessione di grado nove per quanto riguarda il comportamento della curvatura.
Il punto cruciale credo non sia tanto il numero teorico di oscillazioni possibili, quanto il fatto che ogni singolo frammento della spline possieda una densità locale di libertà oscillatoria enormemente superiore rispetto a una Bézier globale.
Questo significa che ogni tratto della spline può sviluppare variazioni di intensità della curvatura concentrate in regioni geometricamente molto ridotte.
La differenza non è quindi tanto nella forma visibile della curva, quanto nella densità locale delle possibili fluttuazioni.
Anche la Bézier di grado cinque possiede una funzione di inflessione con una certa complessità, ma questa appartiene a un’unica funzione globale distribuita su tutta la curva.
In altre parole, un ipotetico cofano di un’automobile vedrebbe le variazioni geometriche dilatate sull’intera superficie.
La B-Spline di grado sei, invece, distribuisce polinomi distinti sui diversi segmenti della curva.
Ogni tratto introduce quindi nuovi gradi di libertà locali e nuove possibilità di compensazione interna della curvatura sulla stessa distanza geometrica.
La spline acquisisce una libertà di oscillazione locale enormemente superiore rispetto alla Bézier.
Ed è proprio questa attività microscopica che rischia, a mio avviso, di poter sfuggire al controllo visivo del progettista a monitor, manifestandosi magari soltanto sotto le riflessioni del tunnel di controllo qualità.
A questo aggiungerei la proprietà di variazione diminuita delle curve di Bézier: la curva non può presentare un numero di intersezioni con una retta superiore a quello del proprio poligono di controllo.
Questa proprietà implica un forte vincolo geometrico globale e contribuisce a limitare oscillazioni macroscopiche rispetto alla struttura di controllo.
Sia chiaro che non fornisce alcuna garanzia diretta sul comportamento locale della curvatura o delle sue derivate superiori.
Nelle B-Spline la situazione è più articolata.
La proprietà di variazione diminuita, nella sua forma globale, continua a valere anche per le B-Spline rispetto al poligono di controllo complessivo.
Tuttavia il legame tra controllo e comportamento locale risulta più indiretto.
La presenza dei nodi e il supporto locale delle funzioni base comportano una struttura per la quale la variazione del poligono di controllo si propaga in modo confinato agli span influenzati.
Questo implica che la curva possa rispettare vincoli globali analoghi a quelli delle Bézier, ma distribuire la propria risposta geometrica su porzioni più ristrette del dominio parametrico.
In questo senso, anche se non si introduce una “instabilità” in senso matematico, si introduce una maggiore sensibilità locale del comportamento geometrico: piccole variazioni nel poligono di controllo o nella distribuzione parametrica possono produrre effetti concentrati su singoli span, con una redistribuzione delle derivate superiori in prossimità dei nodi.
Ne consegue che la variazione diminuita, pur rimanendo valida come vincolo globale, diventa meno significativa per quanto riguarda la qualità locale della curvatura e la sua regolarità percettiva.
Il punto fondamentale è che la continuità matematica non coincide necessariamente con la fairness estetica.
La continuità matematica in corrispondenza di un nodo è infatti un vincolo puramente puntuale.
Garantisce che le derivate destra e sinistra coincidano esattamente nel punto di giunzione, ma non impone alcun controllo sull’andamento intermedio del segmento.
A pochi millimetri dal nodo, il polinomio locale è libero di deformarsi.
Se i punti di controllo non sono distribuiti in modo estremamente armonico, il segmento può essere costretto a compiere un repentino picco o un cambio di pendenza della curvatura per riuscire contemporaneamente a rispettare i vincoli di continuità e la forma dei segmenti vicini.
La matematica restituisce una continuità perfetta nel nodo, ma il grafico di curvatura potrebbe rivelare un’oscillazione di intensità sufficiente a compromettere la qualità ottica della superficie.
La curvatura non dipende esclusivamente dalle derivate seconde della curva, ma viene influenzata indirettamente anche da tutte le derivate successive.
Le derivate terze (Jerk) controllano la variazione della curvatura, le derivate quarte (Snap) ne regolano la morbidezza evolutiva e, via via, le derivate superiori contribuiscono in modo sempre più sottile alla distribuzione dell’energia geometrica lungo il profilo.
Il loro contributo diventa progressivamente meno evidente, ma non per questo trascurabile nelle superfici ad alta qualità ottica.
Dal punto di vista puramente geometrico, una continuità G2 può già produrre superfici formalmente corrette.
Tuttavia, nelle superfici Class-A, dove la qualità viene giudicata attraverso riflessioni luminose estremamente sensibili, la sola continuità della curvatura spesso non è sufficiente.
In pratica diventa importante controllare almeno la regolarità della variazione della curvatura, cioè un comportamento assimilabile a una continuità G3, mentre il controllo implicito delle derivate ancora superiori contribuisce a ridurre ulteriormente micro-oscillazioni e irregolarità percettive che potrebbero emergere nelle zebra analysis o nei riflessi speculari.
Nelle curve di Bézier, le funzioni di base sono i polinomi di Bernstein, funzioni simmetriche, stabili e completamente determinate dal grado della curva.
Il comportamento della deformazione è quindi globale, monotono e prevedibile.
Nelle B-Spline, invece, le funzioni di base vengono generate ricorsivamente tramite la formula di Cox-de Boor e dipendono direttamente dal vettore dei nodi.
Questo introduce una maggiore sensibilità locale della risposta geometrica rispetto alle Bézier.
Se la spaziatura parametrica dei nodi non riflette perfettamente la distribuzione geometrica della curva nello spazio 3D, le funzioni di base possono deformarsi e diventare asimmetriche.
Una funzione di influenza compressa da nodi troppo ravvicinati produce una risposta molto più brusca allo spostamento del relativo punto di controllo.
La deformazione non si distribuisce più in modo armonico, ma tende a concentrarsi localmente, introducendo variazioni improvvise delle derivate superiori e quindi del jerk geometrico.
Quindi, in maniera quasi paradossale, il controllo locale, che rappresenta uno dei grandissimi vantaggi pratici delle B-Spline, potrebbe diventare un elemento di criticità qualitativa.
Quando un progettista modifica una regione della curva lasciando immutati i segmenti più lontani, la B-Spline deve contemporaneamente:
- preservare la continuità sui nodi,
- mantenere stabili gli span vicini,
- limitare la propagazione della deformazione,
- rispettare il comportamento imposto dal vettore nodale.
La localizzazione del supporto delle funzioni base può concentrare le variazioni delle derivate superiori in prossimità degli span modificati, generando il wobble.
Nelle Bézier pure questo fenomeno è molto meno probabile, perché non esistono né nodi né controllo locale.
Qualunque modifica si distribuisce globalmente lungo tutta la curva, impedendo concentrazioni locali di energia geometrica.
Va però precisato un punto importante.
Una B-Spline costruita correttamente, con pochi span, nodi uniformi, distribuzione armonica dei CV e grado adeguato, può assolutamente raggiungere qualità di livello Class-A.
Molte superfici industriali moderne sono infatti NURBS e non patch Bézier pure.
Il problema è che la spline introduce comunque una struttura matematica più complessa:
- segmentazione parametrica,
- funzioni di base locali,
- dipendenza dal vettore dei nodi,
- possibili compensazioni locali invisibili a occhio.
Ne concludo quindi che una B-Spline ben costruita può raggiungere risultati eccellenti, ma richiede una disciplina progettuale molto più rigorosa.
La Bézier, invece, riducendo drasticamente i gradi di libertà locali e imponendo una distribuzione globale della deformazione, limita a monte la possibilità che certe micro-oscillazioni dell’intensità di curvatura possano nascere senza essere immediatamente percepite dal modellatore.
Per questo motivo sono venuto dell’idea che, nella modellazione di classe A, la scelta di strutture Bézier o quasi-Bézier non rappresenti una scorciatoia né una semplificazione, ma una scelta conservativa e rigorosa.
Si preferisce quindi sacrificare parte della libertà locale pur di ridurre il rischio che la matematica della curva sviluppi comportamenti ondulatori che possano sfuggire al controllo visivo e manifestarsi soltanto nelle riflessioni luminose o nella produzione reale.
Perché la scelta di un grado diverso per le due curve?
Perché confrontare una Bézier di grado cinque con una B-Spline di grado sei?
La scelta potrebbe apparire arbitraria, ma nasce dal tentativo di rendere il confronto più equilibrato dal punto di vista della continuità interna.
Una Bézier single-span non possiede nodi interni e quindi mantiene un comportamento polinomiale unico su tutto il dominio parametrico.
Una B-Spline multi-span, invece, introduce inevitabilmente transizioni ai knot.
Poiché una B-Spline di grado p possiede continuità C^{p-1} sui nodi semplici, utilizzare una spline di grado sei significa ottenere continuità C^5, innalzando il livello di regolarità interna rispetto a una spline di grado cinque, che si fermerebbe a C^4.
La scelta del grado superiore nasce quindi dal tentativo di ridurre il più possibile l’influenza delle transizioni interne tra span e confrontare la Bézier con una struttura spline dotata di una continuità interna più elevata e comparabile.
Una B-Spline di grado cinque avrebbe la derivata quinta costante all’interno di ciascuno span, ma potenzialmente differente tra uno span e l’altro, comportando un salto netto e una discontinuità in corrispondenza dei nodi.
Questo balzo istantaneo fa sì che la derivata quarta (lo snap, che governa la morbidezza evolutiva della curvatura) diventi una funzione lineare a tratti, ovvero una spezzata caratterizzata da variazioni di pendenza repentine e angoli vivi proprio sui nodi.
Avere derivate elevate costanti dentro lo span ma con discontinuità di pendenza sul nodo influenza negativamente l’armonia della variazione di curvatura stessa. Scegliendo il grado sei, la derivata quinta diventa continua e la derivata quarta si trasforma in una spline quadratica fluida e priva di cuspidi, smussando radicalmente le transizioni.
Nota.
Le considerazioni fatte non hanno l’ambizione di costituire una dimostrazione matematica in senso stretto, ma una lettura analitica e qualitativa del comportamento delle curve dal punto di vista della modellazione Classe A.
L’obiettivo non è quindi quello di formalizzare risultati teorici rigorosi, quanto di utilizzare strumenti e concetti della geometria differenziale come supporto interpretativo per evidenziare i meccanismi che possono influenzare la qualità percettiva delle superfici.
In questo senso, alcuni passaggi fanno uso di argomentazioni matematiche come linguaggio descrittivo della struttura del problema più che come apparato dimostrativo completo.
I termini jerk, snap e crackle sono mutuati dalla cinematica, dal punto di vista dell’analisi differenziale si tratta ovviamente di una semplificazione terminologica.