<< inizio < ·············································································

Metodo di Bezier

Si ottiene una curva che passa solo per il primo e per l'ultimo punto ma viene solo delineata dagli altri punti. È un metodo utilizzato perdare forma alle linee curve che possono essere costruite con i software di grafica.

Furono largamente pubblicizzate nel 1962 dall'ingegnere francese Pierre Bézier che le usò per disegnare le carrozzerie delle automobili.


L'idea, tipicamente ricorsiva, si basa su una semplice descrizione parametrica dei punti P di una retta AB: P = (1-t)A+tB, al variare del numero reale t.

I punti P della curva per P0 e P1:   
		P = (1-t)P0+tP1
I punti P della curva per P0, P1 e P2:   
		P = (1-t)[(1-t)P0+tP1] + t [(1-t)P1+tP2] = 
		=(1-t)2P0+2t(1-t)P1+t2P2
I punti P della curva per P0, P1, P2 e P3:  
		P = (1-t)[(1-t)2P0+2t(1-t)P1+t2P2] + t [(1-t)2P1+2t(1-t)P2+t2P3] =
		= (1-t)3P0+3t(1-t)2P1+3t2(1-t) P2 +t3P3
...
Si può anche scrivere, evidenziando lo schema ricorsivo:
	


	
Con una formula più squisitamente iterativa, la curva ha equazioni parametriche:	
	



L'implementazione in Javascript può basarsi su una function ricorsiva, nella natura dell’algoritmo, come la seguente:
function  Bezier_rico(pti){
	var n=pti.length;	
	if (n>1){
		var p= new Array();
		for (var i=1;i<n;i++)
			p.push(["(1-t)*("+pti[i-1][0]+")+t*("+pti[i][0]+")","(1-t)*("+pti[i-1][1]+")+t*("+pti[i][1]+")"]);
		return Bezier_rico(p);
	}else
		return pti;
}
Una function iterative per implementare la formula rielaborata in ultimo:
function  Bezier_iter(pti){
	var n=pti.length;
	var N=n-1;
	var bino;
	var x_t="";
	var y_t="";
	for (var i=0; i<N; i++){
		for (var k=0; k<N-i; k++){
			x_t+="(1-t)*";
			y_t+="(1-t)*";
		}	
		bino=1;
		for (var k=0; k<i; k++){
			bino*=(N-k)/(k+1);
			x_t+="t*";
			y_t+="t*";
		}
		x_t+="("+pti[i][0]+")*"+bino+"+";
		y_t+="("+pti[i][1]+")*"+bino+"+";
	}	
	for (var k=1; k<n; k++){
		x_t+="t*";
		y_t+="t*";
	}
	x_t+="("+pti[N][0]+")";
	y_t+="("+pti[N][1]+")";
	return [x_t,y_t];
}


pagina di Roberto Ricci L.S. "A. Righi", Bologna. Ultima revisione