Questa pagina descrive come utilizzare le B-spline in FreeCAD. Fornisce anche informazioni di base su cosa sono le B-spline e per quali applicazioni sono utili.
Motivi
Se si conoscono già le B-spline e la loro applicazione, è possibile continuare direttamente con la sezione B-spline in FreeCAD.
Supponiamo che si voglia progettare una parte che dovrebbe essere prodotta con una stampante 3D. La parte deve avere un bordo fatto in questo modo:
È necessario stampare il pezzo nella direzione dal basso verso l'alto dello schizzo. Le strutture di supporto esterne potrebbero non essere un'opzione. Pertanto, è necessario aggiungere un supporto direttamente al pezzo. Quali opzioni si hanno?
- Opzione 1: si potrebbe aggiungere una linea dal punto (20, 0) al punto (80, 40):
Questa soluzione, però, necessita di molto volume, quindi peso e materiale.
- Opzione 2: si potrebbe collegare i due punti con un arco di cerchio. Per risparmiare volume, l'arco dovrebbe terminare tangenzialmente nel punto (80,40). La soluzione sarebbe quindi questa:
Va bene. Ma sul fondo non si ha bisogno di supporto immediato.
- Opzione 3: si potrebbe risparmiare ulteriore volume se la connessione tra i 2 punti fosse una curva che inizia tangenzialmente in (0, 20) e termina tangenzialmente in (80, 40):
Quindi una curva che consenta di collegare due punti tangenzialmente a un punto di riferimento può essere molto utile per le costruzioni. Le curve di Bézier offrono questa funzionalità.
Curve di Bézier
Derivazione
Le curve di Bézier sono polinomi che descrivono la connessione tra due punti. Il polinomio più semplice che collega due punti è una retta (), quindi le curve di Bézier lineari sono anche segmenti di retta:
Animazione 1: Curva lineare di Bézier.
Tuttavia, un polinomio diventa utile quando possiamo controllarlo. Quindi dovrebbe esserci un punto tra i due estremi che ci permetta di definire come sono collegati. Come nell'esempio precedente, opzione 3, la curva è utile quando inizia e finisce tangente alle linee che attraversano gli estremi. Questa è una caratteristica principale delle curve di Bézier. Aggiungiamo quindi un punto di controllo tra i due estremi. La curva inizierà tangente a questo punto di controllo, il che significa che è tangente alla linea che possiamo tracciare tra il punto iniziale e il punto di controllo. Andando all'indietro dall'estremo, la curva sarà anche tangente alla linea che possiamo tracciare tra il punto di controllo e il punto finale. L'animazione 2 mostra l'aspetto di una curva di questo tipo.
Animazione 2: Curva di Bézier quadratica. P1 è quindi il punto di controllo.
L'animazione chiarisce in cosa consiste fondamentalmente la curva: una transizione da P0 a P2 mediante la rotazione della linea P0-P1 nella linea P1-P2. Otteniamo quindi la gradevole caratteristica di inizio/fine tangenziale.
Una curva di questo tipo può essere descritta solo da un polinomio quadratico. (Il numero di svolte sinistre o destre + 1 è l'ordine polinomiale necessario. Un polinomio quadratico è una singola curva, un polinomio cubico ha due curve e così via.) Pertanto, una curva di Bézier con un punto di controllo è una curva di Bézier quadratica (del secondo ordine).
Avere un solo punto di controllo spesso non è sufficiente. Si prenda l'esempio motivazionale di cui sopra. Nell'opzione 3 si termina la curva tangenzialmente in direzione x. Ma come si possono collegare i punti (20, 0) e (80, 40) in modo che la curva termini tangenzialmente in direzione y? Per ottenere questo risultato è necessaria prima una svolta a destra e poi una a sinistra, quindi un polinomio cubico (del terzo ordine). E questo significa che per una curva di Bézier c'è bisogno (o potremmo dire che otteniamo) un secondo punto di controllo. L'animazione 3 mostra una curva di Bézier cubica.
Animazione 3: Curva cubica di Bézier.
Per rispondere alla domanda, la soluzione finale con la direzione tangente a y nell'esempio è questa:
Regole
Nella derivazione potresti già aver notato alcune "regole" per le curve di Bézier:
- Il grado del polinomio è anche il grado delle curve.
- Se si ha bisogno di svolte, si ha bisogno di una curva di Bézier di almeno ° grado.
- Una curva di Bézier inizia sempre tangente alla linea tra il punto iniziale e il primo punto di controllo (e termina tangente alla linea tra l'ultimo punto di controllo e il punto finale).
Matematica
Se si è interessati a comprendere la matematica di base, ecco le basi.
Una curva di Bézier si calcola utilizzando questa formula:
n è quindi il grado della curva. Quindi una curva di Bézier di grado n è un poligono di ordine n. I fattori sono quindi le coordinate dei punti di controllo delle curve di Bézier. Per una visualizzazione, vedere Controllo delle curvature di Bézier.
Se si è ulteriormente interessati, dare un'occhiata a La matematica delle curve di Bézier con una derivazione animata della matematica delle curve di Bézier.
B-spline
Basi
Questo video elenca all'inizio i problemi pratici delle curve di Bézier. Ad esempio, l'aggiunta o la modifica di un punto di controllo modifica l'intera curva. Questi problemi possono essere risolti unendo diverse curve di Bézier. Il risultato è una cosiddetta spline, in particolare una B-spline (spline di base). Il video spiega anche che l'unione di curve di Bézier quadratiche forma una B-spline quadratica uniforme e che l'unione di curve di Bézier cubiche forma una B-spline cubica uniforme.
Dai video possiamo raccogliere utili "regole" per le B-spline:
- Il primo e l'ultimo punto di controllo sono il punto finale/iniziale della spline.
- Come per le curve di Bézier, le spline iniziano sempre tangenzialmente alla linea tra il punto iniziale e il primo punto di controllo (e terminano tangenzialmente alla linea tra l'ultimo punto di controllo e il punto finale).
- Una unione di Curve di Bézier con il grado ha punti di controllo.
- Poiché nella maggior parte dei casi si lavora con B-spline cubiche, possiamo affermare che punti di controllo portano a segmenti di Bézier e a loro volta punti di giunzione dei segmenti.
- Una B-spline di grado offre in ogni punto una derivata continua di ordine .
- Per una B-spline cubica questo significa che la curvatura (derivata del secondo ordine) non cambia quando si passa da un segmento all'altro. Questa è una caratteristica molto utile, come vedremo più avanti.
Se si è interessati a maggiori dettagli sulle proprietà B-Spline, vedere questo video.
Basi
Poiché introdurremo solo le basi di B-spline, non entreremo nei dettagli.
Basi di costruzione della spline. Osservando la definizione di curve di Bézier nella sezione Matematica, ricordiamo che una curva di Bézier è una combinazione lineare di polinomi con le coordinate x/y di ciascuno dei punti di controllo come fattore. Questi polinomi sono chiamati polinomi di Bernstein.
Combinando diverse curve di Bézier per formare una spline, otteniamo un insieme di polinomi di Bernstein che formano la spline (ne costituiscono la base). Poiché si vuole superare le limitazioni delle curve di Bézier menzionate, non si combinano geometricamente i diversi polinomi di Bernstein delle curve di Bézier, ma si definiscono i polinomi di Bernstein sull'intero intervallo geometrico della spline. Quindi non vengono combinate le curve di Bézier con i relativi polinomi di Bernstein, il che sarebbe:
dove è l'i-esimo polinomio di Bernstein di ordine e i coefficienti sono le coordinate dei punti di controllo della curva di Bézier. Si utilizza però un insieme diverso di funzioni definite sull'intero intervallo della spline:
Si noti che in generale e i punti di controllo di Bézier sono diversi dai punti di controllo B-spline .
I diversi sono definiti a tratti, dove l'intervallo di ciascun pezzo è l'intervallo del pezzo di Bézier.
Quando la lunghezza di tutti i pezzi è uguale, si parla di spline uniforme. (In letteratura, questo è spesso indicato come tempo di percorrenza uguale per pezzo.)
Per capire come siano le coordinate dei punti di controllo B-spline, vedere il primo minuto di questo video.
Vettore dei nodi
Come ottenuto sopra, le B-spline sono create da polinomi a tratti con continuità fino a una certa derivata tra i pezzi. Gli estremi dell'intervallo di definizione del pezzo sono chiamati nodi. Per una spline definita su pezzi, ci sono nodi dati dal cosiddetto vettore dei nodi:
mentre
Il vettore dei nodi comprende i nodi delle funzioni di base che definiscono la B-spline, vedere questo video. Le funzioni di base di una B-spline possono essere calcolate utilizzando il vettore dei nodi e un algoritmo di creazione, vedere questo video.
La derivata fino alla quale esiste continuità è data dalla molteplicità . Pertanto, possiamo specificare un vettore con molteplicità per ogni nodo: . Un nodo su una spline con grado d e molteplicità m indica che la curva a sinistra e a destra del nodo ha una derivata di ordine almeno pari a n (chiamata continuità Cn), mentre .
B-spline Non-uniformi
La derivazione delle B-spline dalle curve di Bézier ha la conseguenza matematica che nelle B-spline ogni segmento polinomiale ha la stessa lunghezza. Tali B-spline sono chiamate "uniformi". Il caso più generale è che possono, ma non devono, avere la stessa lunghezza. Tali spline "non uniformi" hanno il vantaggio di poter controllare la distanza a cui le spline attraversano il loro punto di controllo.
Matematicamente, questo si ottiene definendo i diversi tratti a intervalli diversi. Se, ad esempio, una B-spline è definita per l'intervallo [0, 1], è uniforme se tutti i suoi 5 tratti, ad esempio, sono definiti anche in questo intervallo. Se ora è definito solo nell'intervallo [0, 0,6] (al di fuori dell'intervallo è impostato a zero), è più corto e quindi la spline diventa non uniforme.
Come descritto sopra, i parametri dei nodi sono descritti dal vettore dei nodi. Quindi il vettore dei nodi memorizza gli intervalli di definizione. Quando un pezzo ha un altro intervallo, anche il vettore dei nodi cambia; vedere questo video per una rappresentazione.
B-spline Razionali
Un'ulteriore generalizzazione può essere fatta per le B-spline introducendo pesi per i punti di controllo. In questo modo è possibile controllare "quanto è importante" un punto di controllo.
L'equazione per tale spline è
Si noti che la funzione non è più un polinomio, ma una funzione razionale, e queste spline sono chiamate B-spline razionali. Si osservi che quando tutti i sono uguali, l'equazione si riduce a una B-spline non razionale regolare. Quindi le B-spline non razionali sono un sottoinsieme delle B-spline razionali.
Le B-spline razionali e non uniformi sono spesso chiamate NURBS e sono ampiamente utilizzate nella modellazione geometrica.
B-spline in FreeCAD
FreeCAD consente di creare B-spline uniformi o non uniformi di qualsiasi grado in 2D tramite Sketcher.
Definizione
Per creare B-spline, accedere ad uno schizzo e usare il pulsante della barra degli strumenti B-spline. Quindi fare clic con il pulsante sinistro del mouse per impostare un punto di controllo, spostare il mouse e fare clic con il pulsante sinistro del mouse per impostare il punto di controllo successivo e così via. Infine, fare clic con il pulsante destro del mouse per completare la definizione e creare la B-spline.
Per impostazione predefinita vengono create spline cubiche uniformi, ma non ci sono abbastanza punti di controllo per farlo. Quindi, quando si crea una B-spline con solo 2 punti di controllo, si ottiene ovviamente una spline che è una singola curva di Bézier lineare, con 3 punti di controllo si ottiene una curva di Bézier quadratica, e con 5 punti di controllo si ottiene una B-spline cubica composta da 2 segmenti di Bézier. È anche possibile premere D durante la creazione di una B-spline per impostarne il grado (verrà comunque abbassato se si forniscono meno punti), disponibile dalla versione 0.20.
Per creare B-spline periodiche (B-spline che formano una curva chiusa), utilizzare il pulsante della barra degli strumenti B-spline periodica dai punti di controllo. Non è necessario impostare l'ultimo punto di controllo sul primo perché la B-spline verrà chiusa automaticamente:
È possibile generare B-spline anche a partire da segmenti di schizzo esistenti. Per farlo, selezionare gli elementi e premere il pulsante della barra degli strumenti Converti la geometria in B-spline.
Durante la creazione di una B-spline, è possibile specificarne il grado premendo il tasto D. In questo modo se possibile, l'impostazione predefinita, che prevede la creazione di una B-spline cubica, può essere ignorata, disponibile dalla versione 0.20.
Modificare il Grado
Per modificare il grado, selezionare la B-spline e usare il pulsante della barra degli strumenti Aumenta il grado della B-spline oppure
Diminuisci il grado della B-spline.
Nota: la diminuzione del grado non può annullare un precedente aumento del grado; vedere la pagina Wiki Diminuisci il grado della B-spline per una spiegazione.
Cambiare la Molteplicità di Nodo
I punti in cui due curve di Bézier si connettono per formare la B-spline sono chiamati nodi. La molteplicità dei nodi determina il modo in cui le parti della Bézier sono connesse; per maggiori dettagli, consultare la pagina Wiki Aumenta la molteplicità dei nodi.
Per modificare la molteplicità dei nodi, utilizzare i pulsanti della barra degli strumenti Aumenta la molteplicità di nodo o
Diminuisci la molteplicità di nodo.
Nota: La creazione di due B-spline connesse tra loro non creerà un'unica nuova B-spline. Pertanto, il loro punto di connessione non è un nodo. L'unico modo per ottenere un nuovo nodo in una B-spline esistente è diminuirne il grado. Tuttavia, si potrebbero ottenere molti nuovi nodi. Pertanto, la scelta migliore è ridisegnare la B-spline con più punti di controllo.
Modificare il Peso
Attorno a ogni punto di controllo è visibile un cerchio giallo scuro. Il suo raggio imposta il peso del punto di controllo corrispondente. Per impostazione predefinita, tutti i cerchi hanno raggio 1. Questo è indicato da un vincolo di raggio per il cerchio del primo punto di controllo.
Per creare una B-spline razionale, i pesi devono essere resi indipendenti. Per ottenere questo risultato, è possibile eliminare il vincolo che impone che tutti i cerchi siano uguali e quindi impostare vincoli di raggio diversi per i cerchi.
Se non è impostato alcun vincolo di raggio, è possibile modificare il raggio anche trascinandolo:
Nell'esempio del trascinamento si vede che un peso elevato attrae la curva verso il punto di controllo, mentre un peso molto basso modifica la curva come se il punto di controllo non esistesse quasi.
Osservando la funzione di definizione per le B-spline razionali non uniformi, si nota che un peso pari a zero porterebbe a una divisione per zero. I pesi negativi sono teoricamente possibili, ma non sono supportati. Pertanto, è possibile specificare solo pesi maggiori di zero.
Nota: quando si trascinano i punti, i nodi o le larghezze, i diametri dei cerchi che indicano il peso cambieranno. Questo perché il diametro dipende dalla lunghezza complessiva della B-spline per motivi di visualizzazione. Il peso effettivo non cambia.
Modificare i Nodi
È possibile aggiungere nuovi nodi utilizzando il pulsante Inserisci nodo, disponibile dalla versione 0.20.
Un nodo viene eliminato diminuendo il suo grado a 0 (ad esempio applicando Diminiuisci la molteplicità di nodo quando il suo grado è 1).
La modifica del valore del parametro di un nodo non è ancora supportata.
Visualizzare Informazioni
Poiché la forma di una B-spline non fornisce molte informazioni sulle sue proprietà, FreeCAD offre diversi strumenti per visualizzare le proprietà:
| Proprietà | Pulsante barra strumenti |
| Grado | |
| Poligono di controllo | |
| Traccia di curvatura | |
| Molteplicità di nodo | |
| Pesi |
Limitazioni
Al momento (FreeCAD 0.20) ci sono alcune limitazioni nell'uso degli spline che si devono conoscere:
- Non è possibile impostare vincoli tangenziali.
In questo esempio

si desidera assicurarsi che la spline tocchi la curva blu tangenzialmente due volte. Questo sarebbe utile perché la linea blu potrebbe, ad esempio, essere il confine spaziale del progetto. - Non è possibile creare una curva di offset per una B-spline utilizzando lo strumento Offset.
Casi d'uso tipici
In base alle proprietà delle B-spline, si distinguono 3 casi d'uso principali:
- Curve che iniziano/terminano tangenzialmente a una certa direzione. Un esempio è nei motivi sopra.
- Curve che descrivono progetti più ampi e offrono la libertà di apportare modifiche locali. Vedere questo esempio di seguito.
- Curve che forniscono una certa continuità (derivata). Vedere questo esempio di seguito.
Progettazione
Si prenda ad esempio il caso in cui si voglia progettare l'alloggiamento di un miscelatore da cucina. La forma desiderata dovrebbe essere simile a questa:
Per definire la forma esterna è vantaggioso utilizzare una B-spline perché quando si modifica un punto di controllo per modificare la curvatura nella parte inferiore, la curvatura laterale e superiore non verrà modificata:
Continuità nelle Transizioni Geometriche
Esistono diversi casi in cui è fisicamente necessario avere una certa continuità superficiale in corrispondenza delle transizioni geometriche. Si prenda ad esempio le pareti interne di un canale per fluidi. Quando si verifica una variazione del diametro del canale, non si desidera avere un bordo perché i bordi introdurrebbero turbolenze. Pertanto, come nell'esempio dei motivi sopra, si utilizzano le spline a questo scopo.
Lo sviluppo delle curve di Bézier fu inizialmente avviato dall'industria automobilistica francese. Oltre al risparmio di materiale e alla riduzione della resistenza aerodinamica, anche l'aspetto delle auto doveva essere migliorato. E osservando il design ricercato delle auto francesi degli anni '60 e '70, si nota come le curve di Bézier abbiano dato una spinta al design automobilistico.
Si prenda ad esempio questo compito nella progettazione di automobili: il parafango dell'auto deve "avere un bell'aspetto". Ecco uno schizzo di base del compito:
"Avere un bell'aspetto" significa che il (potenziale) cliente guarda il parafango e non vede riflessi di luce inaspettati, né cambiamenti improvvisi nei riflessi della vernice dell'auto. Quindi, cosa bisogna fare per evitare cambiamenti nei riflessi? Osservando attentamente il parafango:
Nell'area dello spazio sopra il bordo l'intensità della luce riflessa è bassa (indicata dall'ellisse rossa) perché nessuna luce viene riflessa direttamente nella direzione dal bordo all'occhio.
Quando c'è un bordo, c'è un'area dello spazio in cui la luce riflessa ha meno intensità, ed è questo che si nota guardando il parafango. Per evitare questo, è necessario un cambiamento continuo nella pendenza degli elementi della superficie. La pendenza è la derivata del primo ordine e, come spiegato nella sezione Basi, una B-spline di secondo grado (quadratica) offre in ogni punto una derivata continua del primo ordine.
Ma è davvero sufficiente? Nel punto di transizione geometrica si ha ora la stessa pendenza su entrambi i lati, ma la pendenza potrebbe variare in modo diverso. In questo caso, la situazione è la seguente:
Si hanno quindi anche aree dello spazio in cui l'intensità della luce riflessa è diversa. Per evitare ciò, si ha bisogno, nel punto geometrico di transizione, anche di una continuità della derivata del secondo ordine e quindi di una B-spline cubica.
Questa pagina è recuperata da https://wiki.freecad.org/B-Splines