-
大小: 2KB文件類型: .m金幣: 1下載: 0 次發布日期: 2021-06-03
- 語言: Matlab
- 標簽: uniform??cubic??B-spline??interpolate??
資源簡介
對給定的點進行三次B樣條插值,得到插值曲線,這里給定的點可以是二維平面上的點或三維點,注意輸入的點矩陣要每行為一個點坐標,里面都有注釋,可以自己簡單修改封裝成自己想要的帶參函數,里面有測試的點數據,可以直接運行效果還不錯哦!
代碼片段和文件信息
%============均勻三次B樣條曲線插值===========
%輸入:
%?????X:?原始數據點
%輸出:
%?????均勻三次B樣條曲線?[xyz]
%%
function?CurvPoint?=?CBI()
%X=load(‘data.txt‘);
X?=?[0?0?1?;0?1?1;?1?1?0;1?0?1];%每行為一個點
[mn]?=?size(X);?%?CSJ:?m?為點個數,n?為點維數
%A:方程系數-----------------------------
A=zeros(m+2);?%?CSJ:為了使曲線通過起始和末端點增加?2?行系數
A(11)=1;A(12)=-2;A(13)=1;
A(m+2m)=1;A(m+2m+1)=-2;A(m+2m+2)=1;
for?i=2:(m+1)
????A(ii-1)=1;
????A(ii)=4;
????A(ii+1)=1;
end
%e:方程右邊.得到的控制點首尾與插值數據相同.且與控制首末連線相切
e?=?zeros(m+2n);
for?i=2:m+1
????e(i:)=6*X(i-1:);
end
%得到?d?Boor?控制點
d=inv(A)*e;???%?A?*?d?=e
%畫出圖形
hold?on
%原始數據紅色點
plot3(X(:1)X(:2)X(:3)‘r.‘);
%控制多邊形藍色線
%plot3(d(:1)d(:2)d(:3)‘b‘);
%插值B樣條曲線
uu=(0:0.01:1);
Num?=?length(uu);
x?=?zeros(Num1);
y?=?zeros(Num1);
z?=?zeros
評論
共有 條評論