MATLAB 贝塞尔曲线


下面三个公式分别是一次、二次和三次贝塞尔曲线公式:

通用的贝塞尔曲线公式如下:

 

可以看出,系数是由一个杨辉三角组成的。

这里的一次或者二次三次由控制点个数来决定,次数等于控制点个数-1。

实现的效果如下:

代码如下:

 1 clear all;  2 close all;  3 clc;  4 
 5 p=ginput();  6 plot(p(:,1),p(:,2),'b-o');  7 
 8 N=length(p);    %确定贝塞尔阶数(控制点个数-1 9 t=zeros(N,N); 10 
11 M=100;  %确定贝塞尔曲线点的个数 12 
13 %计算杨辉三角 14 for i=1:N 15     t(i,1) = 1; 16     t(i,i) = 1; 17 end 18 if N>=3
19     for i=3:N 20         for j=2:i-1
21             t(i,j) = t(i-1,j-1)+t(i-1,j); 22  end 23  end 24 end 25 
26 %根据公式计算贝塞尔曲线 27 re=zeros(M,2); 28 for i=1:M 29     step = i/M; 30     for k=0:N-1
31         re(i,1) = re(i,1) + (1-step)^(N-k-1)*p(k+1,1)*step^k*t(N,k+1); %t替换为nchoosek(N-1,k),不用计算杨辉三角了; 32         re(i,2) = re(i,2) + (1-step)^(N-k-1)*p(k+1,2)*step^k*t(N,k+1); %t替换为nchoosek(N-1,k),不用计算杨辉三角了; 33  end 34 end 35 
36 hold on; 37 plot(re(:,1),re(:,2),'r');

注意,运行时要先点几下输入控制点,然后按回车键来进行确认。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM