Begtostudy(白途思)'s Professional Technology Blog

欢迎访问begtostudy的专业知识博客!主要是专业技术和算法为主。
  首页  :: 联系 :: 订阅 订阅  :: 管理

3D Bezier Curve, Matlab Code

Posted on 2010-07-29 11:19  白途思  阅读(6895)  评论(0编辑  收藏  举报
You should not use it to draw Bezier curve for practical application, because it’s too slow efficiency.
This code is too simple, and not optimized. 
But you can ues it to learn about the Bezier curve.

% % % --------------------------------
% % % Author: begtostudy
% % % Email : begtostudy@gmail.com
% % % --------------------------------
function Q=bezier(P,t)
% Bezier interpolation for given points.
%
%Example:
% P=[292 280 321 356;
% 196 153 140 148;
% -56 75 140 248];
%
% t=linspace(0,1,100);
% Q3D=Bezier(P,t);
%
% figure
% plot3(Q3D(1,:),Q3D(2,:),Q3D(3,:),'b','LineWidth',2),
% hold on
% plot3(P(1,:),P(2,:),P(3,:),'g:','LineWidth',2) % plot control polygon
% plot3(P(1,:),P(2,:),P(3,:),'ro','LineWidth',2) % plot control points
% view(3);
% box;

for k=1:length(t)
Q(:,k)=[0 0 0]';
for j=1:size(P,2)
Q(:,k)=Q(:,k)+P(:,j)*Bernstein(size(P,2)-1,j-1,t(k));
end
end
end

function B=Bernstein(n,j,t)
B=factorial(n)/(factorial(j)*factorial(n-j))*(t^j)*(1-t)^(n-j);
end
前往Begtostudy的编程知识博客(CSDN)