// Last edited on 2020-11-27 11:24:05 by jstolfi // Macros for interpolation #macro interpolate1(tt, tt0,tt1, vv0,vv1) #local rr = (tt - tt0)/(tt1 - tt0); #local vv = (1-rr)*vv0 + rr*vv1; vv #end #macro interpolate3_bezier(tt, tt0,tt3, vv0,vv1,vv2,vv3) #local vv01 = interpolate1(tt, tt0,tt3, vv0,vv1); #local vv12 = interpolate1(tt, tt0,tt3, vv1,vv2); #local vv23 = interpolate1(tt, tt0,tt3, vv2,vv3); #local vv012 = interpolate1(tt, tt0,tt3, vv01,vv12); #local vv123 = interpolate1(tt, tt0,tt3, vv12,vv23); #local vv0123 = interpolate1(tt, tt0,tt3, vv012,vv123); vv0123 #end #macro interpolate3_hermite(tt, t0,t1, p0,d0,d1,p1) #local rr = (tt - t0)/(t1 - t0); #local ss = 1 - rr; #local ph0 = rr*rr*(2*rr - 3) + 1; #local dh0 = + rr*ss*ss * (t1 - t0); #local dh1 = - ss*rr*rr * (t1 - t0); #local ph1 = ss*ss*(2*ss - 3) + 1; #local pp = ph0*p0 + dh0*d0 + dh1*d1 + ph1*p1; pp #end