// Bézier arc position and derivative by De Casteljau. #macro interp(T, A, B) #local S = 1-T; #local AB = S*A + T*B; AB #end #macro bez_pos(T, Q0, Q1, Q2, Q3) #local Q01 = interp(T, Q0, Q1); #local Q12 = interp(T, Q1, Q2); #local Q23 = interp(T, Q2, Q2); #local Q012 = interp(T, Q01, Q12); #local Q123 = interp(T, Q12, Q23); #local Q0123 = interp(T, Q012, Q123); Q0123 #end #macro bez_diff(T, Q0, Q1, Q2, Q3) #local dQ01dT = Q1 - Q0; #local dQ12dT = Q2 - Q1; #local dQ23dT = Q3 - Q2; #local dQ012dT = interp(T, dQ01dT, dQ12dT) + (dQ12dT - dQ01dT); #local dQ123dT = interp(T, dQ12dT, dQ23dT) + (dQ23dT - dQ12dT); #local dQ0123dT = interp(T, dQ012dT, dQ123dT) + (dQ123dT - dQ012dT); dQ0123dT #end