2017-03-28 33 views
0
之間的曲線

任何人都可以讓我知道我應該如何去在MATLAB中創建一個平滑的曲線形成兩個線

問題陳述:有兩個直線,我想有一個平滑的曲線加入他們的行列。曲線的尺寸不限於任何特定的尺寸。它是好的,只要有一個平滑的連續或兩條線由平滑的曲線彼此連接,如下面圖

Image

最終圖像

Image Final

我希望問題陳述清楚,如果有任何不清楚的情況,請讓我知道。

我使用下面的代碼,並作爲初學者我知道它不是一個完美的代碼,並可能有錯誤。我會很高興,如果任何人都可以讓我知道我怎樣才能以matlab代碼的形式實現這條曲線。

s=10; 
vec=0.6; 
i=0; x=0; y=0; z=0; x1=0; y1=0; z1=0; 
for i=1:s 
    x(i)=0; 
    z(i)=i; 
    y(i)=0; 
end 
angle=60; 
j=0; 
for j=1:s 
if j<vec*s 
    x1(j)=0; 
    z1(j)=j; 
    y1(j)=0; 
end 
if j>=vec*s 
    x1(j)=x(j); 
    y1(j)=(z(j)-vec*s)*sind(angle)+y(i)*cosd(angle); 
    z1(j)=(z(j)-vec*s)*cosd(angle)-y(i)*sind(angle)+vec*s; 
end 
end 
plot3(x1,y1,z1); xlabel('X axis'); ylabel('Y axis'); zlabel('Z axis'); 
+0

你需要更好地定義你所說的 「兩條線之間的平滑曲線」 的意思。你可以創建一個平滑的曲線,從一個矢量開始,在全球各地進行兩次,並以完美的連續性加入另一個矢量!它是你想要的數學連續性,還是隻是一些視覺四捨五入? – Wolfie

+0

是的......我的意思是一旦一個矢量完成,應引入一個平滑的監視,然後它可以連接到其他文件。基本上具有如圖所示的連續性(最終圖像) – Diana

回答

0

使用參數插值(有參數t):

plot3(x1,y1,z1); xlabel('X axis'); ylabel('Y axis'); zlabel('Z axis'); 
hold on; 
n = length(x1); 
t = (1:n)'; 
v = [x1;y1;z1]'; 
idx = [1:3 n-2:n]; % points you want to preserve 
plot3(x1(idx),y1(idx),z1(idx),'o'); 
pp = interp1(t(idx,:),v(idx,:),'spline','pp'); 
tt = linspace(1,n,100); 
X = ppval(pp, tt); 
plot3(X(:,1),X(:,2),X(:,3)); 
grid on 

,你會得到: enter image description here

+0

非常感謝 – Diana