Costruzione di de Casteljau · pesi di Bernstein

Curva di Bézier

Una curva di Bézier nasce prendendo la stessa frazione t lungo ogni lato di una poligonale, poi lungo ogni lato della nuova poligonale, più corta, fino a lasciare un solo punto. Mentre t va da 0 a 1, quel punto disegna la curva.

Le curve di Bézier in questa visualizzazione

Una curva di Bézier di grado n è definita da n + 1 punti di controllo P0,…,PnP_0, \dots, P_n: due punti danno un segmento, tre una curva quadratica, quattro la cubica dei programmi di disegno. Il suo punto B(t)B(t), rosso nell’immagine, si ottiene prendendo ripetutamente la frazione t lungo ogni lato del poligono di controllo. Qui puoi spostare i punti, far variare t da 0 a 1 e osservare i segmenti della costruzione lasciare fili che delineano la curva.

Costruzione mostra i poligoni di ogni livello al valore attuale di t, ciascuno con un lato in meno del precedente. Scansione fa passare t da 0 a 1, lasciando fili della costruzione a intervalli uguali di t, colorati in base a t. La curva vera e propria è la linea sottile.

Scritta per esteso, la costruzione è una successione di medie pesate: l’algoritmo di de Casteljau.

Pi0=Pi,Pik(t)=(1−t) Pik−1(t)+t Pi+1k−1(t),B(t)=P0n(t).P_i^0 = P_i, \qquad P_i^k(t) = (1 - t)\,P_i^{k-1}(t) + t\,P_{i+1}^{k-1}(t), \qquad B(t) = P_0^n(t) .

Sviluppando i livelli successivi, ogni punto di controllo riceve una somma di prodotti di n fattori, ciascuno uguale a 1 − t oppure t. Per PiP_i, ogni prodotto contiene un numero di fattori t pari a i, e ci sono (ni)\binom{n}{i} prodotti di questo tipo, quindi

B(t)=∑i=0nbi,n(t) Pi,bi,n(t)=(ni)ti(1−t)n−i.B(t) = \sum_{i=0}^{n} b_{i,n}(t)\, P_i, \qquad b_{i,n}(t) = \binom{n}{i} t^{i} (1 - t)^{n-i} .

Questi pesi sono i polinomi di Bernstein, rappresentati nel piccolo grafico. Per 0≤t≤10 \le t \le 1 non sono mai negativi e la loro somma è 1: perciò B(t)B(t) è una media pesata dei punti e la curva non esce mai dal loro inviluppo convesso. Spostando un punto PiP_i di un vettore Δ, ogni punto della curva si sposta di bi,n(t) Δb_{i,n}(t)\,\Delta, con lo spostamento maggiore vicino a t=i/nt = i/n. Quella parte della curva non è sempre la più vicina al punto di controllo.

A t = 0 ogni livello comincia in P0P_0, quindi B(0)=P0B(0) = P_0; analogamente, B(1)=PnB(1) = P_n. La curva passa per i due estremi e di solito non passa per gli altri punti. L’ultimo livello della costruzione è un unico segmento che, a meno che non si riduca a un punto, giace sulla tangente alla curva:

B′(t)=n(P1n−1(t)−P0n−1(t)),B′(0)=n (P1−P0),B′(1)=n (Pn−Pn−1).B'(t) = n \bigl(P_1^{n-1}(t) - P_0^{n-1}(t)\bigr), \qquad B'(0) = n\,(P_1 - P_0), \qquad B'(1) = n\,(P_n - P_{n-1}) .

La curva parte dunque da P0P_0 in direzione di P1P_1 e arriva in PnP_n dalla direzione di Pn−1P_{n-1}, a meno che i due punti a quell’estremo non coincidano. Ecco perché un programma di disegno mostra i punti intermedi di una cubica come maniglie che partono dagli estremi.

Ogni filo dell’ultimo livello che non si riduce a un punto è tangente alla curva nel punto che porta. Un filo del livello inferiore è tangente allo stesso modo alla curva definita da un numero minore di punti vicini. Così ogni famiglia di fili delinea una propria curva e le curve di grado inferiore appaiono all’interno del poligono. Delineare non significa avvolgere da un solo lato: dove la curva ha un flesso, attraversa la propria tangente e i fili si trovano da entrambe le parti. Se i tre punti di controllo non sono allineati, i fili di una quadratica corrispondono a un disegno fatto tendendo un filo tra due file rettilinee di chiodi, e la curva che delineano è una parabola.

La costruzione a t = s taglia anche la curva in due. I primi punti dei suoi livelli sono i punti di controllo del tratto da 0 a s, gli ultimi quelli del tratto da s a 1: Dividi mostra questi due gruppi. Dimezzando i tratti più e più volte, i loro poligoni si avvicinano alla curva. Eleva il grado procede nel senso opposto: un punto di controllo in più, la stessa curva e un poligono più vicino a essa. Un punto aggiunto premendo sull’immagine, invece, cambia la curva.

Paul de Casteljau elaborò la costruzione alla Citroën nel 1959. Pierre Bézier ottenne indipendentemente le stesse curve alla Renault e le pubblicò negli anni Sessanta.

Cosa osservare

  • Passi uguali di t non corrispondono necessariamente a distanze uguali lungo la curva.
  • La zona di colore più intenso non è la curva. È dove i fili si sovrappongono di più, e può trovarsi un po’ discosta dalla curva.

Argomenti correlati