用Matlab实现bezier曲线的降阶逼近这个是我写的代码,但是有错不正确,希望能改正:p=[50 50;60 60;100 80;150 60;200 40];n=size(p,1);t=linspace(0,1)';b=0;for k=0:n-1 tmp=nchoosek(n-1,k)*t.^k.*(1-t).^(n-1-k); b=b+tmp*p(k+1,:);en
来源:学生作业帮助网 编辑:六六作业网 时间:2024/09/14 17:50:19
用Matlab实现bezier曲线的降阶逼近这个是我写的代码,但是有错不正确,希望能改正:p=[50 50;60 60;100 80;150 60;200 40];n=size(p,1);t=linspace(0,1)';b=0;for k=0:n-1 tmp=nchoosek(n-1,k)*t.^k.*(1-t).^(n-1-k); b=b+tmp*p(k+1,:);en
用Matlab实现bezier曲线的降阶逼近
这个是我写的代码,但是有错不正确,希望能改正:
p=[50 50;60 60;100 80;150 60;200 40];
n=size(p,1);
t=linspace(0,1)';
b=0;for k=0:n-1
tmp=nchoosek(n-1,k)*t.^k.*(1-t).^(n-1-k);
b=b+tmp*p(k+1,:);endplot(p(:,1),p(:,2),'.:',b(:,1),b(:,2))
hold on
P1=zeros(n,2);
P1(1,:)=p(1,:);for i=1:n-1P1(i+1,:)=(n*p(i+1,:)-i*P1(i,:))/(n-i);end
plot(P1(:,1),P1(:,2),'.:');
用Matlab实现bezier曲线的降阶逼近这个是我写的代码,但是有错不正确,希望能改正:p=[50 50;60 60;100 80;150 60;200 40];n=size(p,1);t=linspace(0,1)';b=0;for k=0:n-1 tmp=nchoosek(n-1,k)*t.^k.*(1-t).^(n-1-k); b=b+tmp*p(k+1,:);en
凑了凑数:
p=[50 50;90 230;130 310;170 320;210 280;250 200];
% p=[50 50;100 300;360 250;280 100;440 120;600 460];
n=size(p,1);
t=linspace(0,1)';
b=0;for k=0:n-1
tmp=nchoosek(n-1,k)*t.^k.*(1-t).^(n-1-k);
b=b+tmp*p(k+1,:);
end
plot(p(:,1),p(:,2),'.:',b(:,1),b(:,2))
hold on
P1=zeros(n-1,2);
P1(1,:)=p(1,:);
nn=n-1;
for i=1:nn-1
P1(i+1,:)=(nn*p(i+1,:)-i*P1(i,:))/(nn-i);
end
plot(P1(:,1),P1(:,2),'-r');
祝顺利!