我正在研究Bézier曲线,以及我的代码现在看起来如何
x=[3 2 6 4 1];
y=[8 1 7 5 9];
n=length(x)-1;
scatter(x,y)
hold on
for t=0:0.01:1
for i=0:1:n
xt=nchoosek(n,i)*(t^i)*(1-t)^(n-1)*x(n+1);
yt=nchoosek(n,i)*(t^i)*(1-t)^(n-1)*y(n+1);
end
end
plot(xt,yt)
hold off
我是使用Matlab的初学者,所以我遇到了一些问题。我想知道如何制作与t相同大小的xt和yt向量(即101x1)并将它们得到的值,只要我改变,只要t是相同的,就可以将其添加到其他值。当t改变时,它们必须从0开始并添加它们在我改变时获得的值,直到它变为n。
谢谢
答案 0 :(得分:2)
变量xt
和yt
应该是向量,并且在t
的每次迭代中更新其i
值。尝试:
x=[3 2 6 4 1];
y=[8 1 7 5 9];
n=length(x)-1;
scatter(x,y)
hold on
T = 0:0.01:1
xt = zeros(size(T));
yt = zeros(size(T));
for idt = 1:length(T)
t=T(idt);
for i=0:1:n
xt(idt)=xt(idt)+nchoosek(n,i)*(t^i)*(1-t)^(n-i)*x(i);
yt(idt)=yt(idt)+nchoosek(n,i)*(t^i)*(1-t)^(n-i)*y(i);
end
end
plot(xt,yt)
hold off