1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| %May,09,2009
clear all;
% Data Setting
r=[0 1 1.5 0];
w=[0.5 1 0.6 0.4];
n=4;
a=0;
b=1;
x=0:0.01:1;
m=length(x);
% Matrix Setting
Pn=zeros(1,m);
Rn=zeros(1,m);
Wn=zeros(1,m);
% Rational Bezier Curve
for j=1:m
for i=1:n
B(i)=nchoosek(n-1,i-1)*realpow(b-x(j),n-i)*realpow(x(j)-a,i-1);
Pn(j)=Pn(j)+B(i)*w(i)*r(i);
Wn(j)=Wn(j)+B(i)*w(i);
end
Rn(j)=Pn(j)/Wn(j);
end
%Calculate H_k
H(1:(2*n-3))=0;
for k=1:(2*n-3)
for i=max(0,k-n+1)+1:fix((k-1)/2)+1
H(k)=H(k)+(k-2*i+2)*nchoosek(n-1,i-1)*nchoosek(n-1,k-i+1)*w(i)*w(k-i+2)*(r(k-i+2)-r(i));
end
end
% R''
R3(1:m)=0;
for j=1:m
z1=0;z2=0; z3=0; z4=0; z5=0; z6=0; z7=0;
for i=1:n-1
z1=z1+nchoosek(n-2,i-1)*realpow(b-x(j),n-i-1)*realpow(x(j)-a,i-1)*(w(i+1)-w(i));
end
for k=1:(2*n-3)
z2=z2+realpow(b-x(j),2*n-3-k)*realpow(x(j)-a,k-1)*H(k);
end
for i=1:n-2
z3=z3+nchoosek(n-3,i-1)*realpow(b-x(j),n-2-i)*realpow(x(j)-a,i-1)*(w(i+2)-2*w(i+1)+w(i));
end
for k=1:(2*n-3)
z4=z4+H(k)*realpow(b-x(j),2*n-3-k)*realpow(x(j)-a,k-1);
end
for i=1:n-1
z5=z5+nchoosek(n-2,i-1)*realpow(b-x(j),n-i-1)*realpow(x(j)-a,i-1)*(w(i)-w(i+1));
end
for k=1:(2*n-4)
z6=z6+nchoosek(2*n-5,k-1)*realpow(b-x(j),2*n-4-k)*realpow(x(j)-a,k-1)*(H(k+1)/nchoosek(2*n-4,k)-H(k)/nchoosek(2*n-4,k-1));
end
for k=1:(2*n-5)
z7=z7+nchoosek(2*n-5,k-1)*realpow(b-x(j),2*n-5-k)*realpow(x(j)-a,k-1)*(H(k+2)/nchoosek(2*n-4,k+1)-2*H(k+1)/nchoosek(2*n-4,k)+H(k)/nchoosek(2*n-4,k-1));
end
R3(j)=6*(n-1)*(n-1)*z1*z1*z2+2*(n-1)*(n-2)*Wn(j)*z3*z4+8*(n-1)*(n-2)*Wn(j)*z5*z6+(2*n-4)*(2*n-5)*Wn(j)*Wn(j)*z7;
end
R3=R3./Wn./Wn./Wn./Wn;
% Plot Graphic
plot(x,R3,'b');
legend('Third Derivative of Rational Bezier Curve');
xlabel('t');
ylabel('R''''''(t)');
title(['Third Derivative of Rational Bezier Curve']);
|