卷
卷起千堆雪tyn
Unregistered / Unconfirmed
GUEST, unregistred user!
这里的Q0---Q3是已知的4个控制点,
你绘制的Bezier曲线如果要经过这4个点,需要反求控制点;
这里的P0---P3就是反求出的点,以P0---P3为新的控制点
绘制出的Bezier曲线经过Q0---Q3点。
procedure UnControlBezierPoint(var Q0,Q1,Q2,Q3,P0,P1,P2,P3 :TPoint);
begin
P0 :=Q0;
P1.x :=(-5*Q0.x+18*Q1.x-9*Q2.x+2*Q3.x) div 6;
P1.y :=(-5*Q0.y+18*Q1.y-9*Q2.y+2*Q3.y) div 6;
P2.x :=(2*Q0.x-9*Q1.x+18*Q2.x-5*Q3.x) div 6;
p2.y :=(2*Q0.y-9*Q1.y+18*Q2.y-5*Q3.y) div 6;
P3 :=Q3;
end;