-
大小: 3KB文件類型: .zip金幣: 2下載: 0 次發布日期: 2021-06-02
- 語言: Matlab
- 標簽:
資源簡介
對多個點組成的數組進行插值擬合,在折點處得到光滑的曲線

代碼片段和文件信息
%?B樣條曲線生成程序
%?說明:給定8個控制頂點{(3?5)(2?4)(3?2)(6?1)(5?8)(10?6)(8?1)(6?0)}
%load?c;x=800:25:1800;
%a(1:)=x;a(2:)=c;
clc;clear;close?all;
%??選取17個控制點,第一行為行,第二行為列
a=[10?15?20?25?30?35?40?45?50?55?60?65?70?75?80?85?90;
????20?16?26?26?26?26?24?24?24?22?22?16?28?26?26?26?24];?%?控制頂點數組
%a=[4?3?2?3?6?5?10?8?6?4;6?5?4?2?1?8?6?1?0?-1];%增加兩個控制頂點(4?6)(4?-1)從而使曲線通過原來的首末點
plot(a(1:)a(2:));?%?繪制控制多邊形
hold?on;?%?默認為hold?off,此命令用來保留控制多邊形的圖形;
%?生成三次B樣條函數
%?由于4個頂點可以確定一條B樣條,共有17個控制頂點,可確定17-3=14條B樣條曲線
for?i=1:14
????for?u=0:0.001:1;?%?參數u[01]之間
????????%?生成樣條基函數
????????b0=1/6*(-u^3+3*u^2-3*u+1);????????%?基函數b0;
????????b1=1/6*(3*u^3-6*u^2+4);??????????%?基函數b1;
????????b2=1/6*(-3*u^3+3*u^2+3*u+1);??????%?基函數b2;
????????b3=1/6*u^3;???????????????????????%?基函數b3;
????????
????????%?曲線擬合
????????x=b0*a(1i)+b1*a(1i+1)+b2*a(1i+2)+b3*a(1i+3);?%?確定曲線的橫坐標x;
????????y=b0*a(2i)+b1*a(2i+1)+b2*a(2i+2)+b3*a(2i+3);?%?確定曲線的縱坐標y;
????????line(xy‘Color‘‘r‘‘Linestyle‘‘--‘);?%?繪制曲線坐標點;
????end
end
%?hold?off;
%?生成二次B樣條函數
%?n=2;17對控制點,可以確定17-2=15條B樣條曲線
for?i=1:15
????for?t=0:0.001:1;?%?參數u[01]之間
????????%?生成樣條基函數
????????g0=1/2*(t-1)^2;?????????????????%?基函數g0;
????????g1=1/2*(-2*t^2+2*t+1);??????????%?基函數g1;
????????g2=1/2*t^2;????%?基函數g2;
????????
????????%?曲線擬合
????????x=g0*a(1i)+g1*a(1i+1)+g2*a(1i+2);?%?確定曲線的橫坐標x;
????????y=g0*a(2i)+g1*a(2i+1)+g2*a(2i+2);?%?確定曲線的縱坐標y;
????????line(xy‘Color‘‘g‘‘Linestyle‘‘:‘);?%?繪制曲線坐標點;
????end
end
hold?off;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1776??2012-12-22?13:36??2次B樣條曲線和3次B樣條曲線的matlab繪制,適用于初學者\TestBSpline.m
?????目錄???????????0??2018-05-21?10:27??2次B樣條曲線和3次B樣條曲線的matlab繪制,適用于初學者\基礎B-Spline\
?????文件????????1776??2012-12-22?13:36??2次B樣條曲線和3次B樣條曲線的matlab繪制,適用于初學者\基礎B-Spline\TestBSpline.m
?????目錄???????????0??2018-05-21?10:27??2次B樣條曲線和3次B樣條曲線的matlab繪制,適用于初學者\
評論
共有 條評論