> restart: > with(linalg): > with(plots): > gradanhebung:=proc(degree,coeff) > # Gradanhebung bei einer Bezierkurve > # Input: degree: Grad der Kurve > # coeff: Feld der Kontrollpunkte (entsprechende Koordinate) > local coeffa, k; > coeffa:=vector(degree+2); > for k from 2 to degree+1 do > coeffa[k]:= (k-1)*coeff[k-1]/(degree+1) + (1-(k-1)/(degree +1))*coeff[k] > od; > coeffa[1]:=coeff[1]; > coeffa[degree+2]:=coeff[degree+1]; > evalm(coeffa) > end: Warning, new definition for norm Warning, new definition for trace > n:=3: > bex:=vector(n+11,[ 1.0,5.0,4.0,-3.0,0,0,0,0,0,0,0,0,0,0]): > bey:=vector(n+11, [0.,1.,3.,2.,0,0,0,0,0,0,0,0,0,0]): > F1:=listplot([seq([bex[j],bey[j]],j=1..n+1)]): > for j from 1 to 10 do > bex1:=vector(n+j+1): bey1:=vector(n+j+1): > bex1:=gradanhebung(n+j-1,bex); > bey1:=gradanhebung(n+j-1,bey); > F[j]:=listplot([seq([bex1[l],bey1[l]],l=1..n+j+1)]); > for k from 1 to n+j+1 do bex[k]:=bex1[k]; bey[k]:=bey1[k] od; > od: > display({F1,F[1],F[2],F[3],F[4],F[5],F[6],F[7],F[8],F[9],F[10]}); > > >