ベジェ曲線

clear; close all;clc;
syms t;
P = [[0 0];[1 2];[2 2];[3 0]];
Q = [[3 0];[4 -2];[5 -2];[6 0]];
plot(P(:,1),P(:,2),'x')
hold on;
plot(Q(:,1),Q(:,2),'x')
f1 = P(1,:)*(1-t)^3+3*(1-t)^2*t*P(2,:)+3*(1-t)*t^2*P(3,:)+t^3*P(4,:);
f2 = Q(1,:)*(1-t)^3+3*(1-t)^2*t*Q(2,:)+3*(1-t)*t^2*Q(3,:)+t^3*Q(4,:);
df1 = diff(f1);
df2 = diff(f2);

df1_right = subs(df1,t,1)
df2_left = subs(df2,t,0)

ddf1 = diff(df1);
ddf2 = diff(df2);

ddf1_right = subs(ddf1,t,1)
ddf2_left = subs(ddf2,t,0)

%端点で導関数は一致する
%端点では2階微分は一致しない→上に凸と下に凸が入れ替わっている

for tt = 0:0.01:1
  xy = subs(f1,t,tt);
  plot(xy(1),xy(2),'o');  
end

for tt = 0:0.01:1
  xy = subs(f2,t,tt);
  plot(xy(1),xy(2),'o');  
end

f:id:seinzumtode:20200908201757p:plain