2016-09-24 70 views
0

我有一個參數B樣條曲面圖參數曲面,S如何在Matlab

S=[x(:);y(:);z(:)]; 

現在,我對剛纔繪製的S每列作爲一個單一的點繪製表面:

plot3(S(1,:),S(2,:),S(3,:),'.') 

結果是這樣的:

S plotted as a collection of points

不幸的是,當我們看這張照片時,通過繪製個別點,我們失去了深度和曲線感。

關於如何實現參數曲面的SURFMESH命令的任何想法?這些函數似乎需要一個代表meshgrid的矩陣,我不認爲我可以使用它,因爲S的X x Y域不是四邊形。但是,我喜歡使用這些功能時可以方便地包含的照明和顏色插值,因爲這樣可以解決上圖中顯示的可視化問題。

我也接受任何其他建議。

謝謝。

回答

1

沒有看到你的方程很難提供一個確切的解決方案,但你可以通過使用fsurfezsurf如果你有MATLAB的舊版本)完成這一任務。

有關於plotting parametric surfaces using ezsurffsurf

syms s t 
r = 2 + sin(7*s + 5*t); 
x = r*cos(s)*sin(t); 
y = r*sin(s)*sin(t); 
z = r*cos(t); 

fsurf(x, y, z, [0 2*pi 0 pi]) % or ezsurf(x, y, z, [0 2*pi 0 pi]) 

如果你想有一個分段函數特​​定的部分,你可以寫一個自定義函數

function result = xval(s) 
    if s < 0.5 
     result = 1 - 2*s; 
    else 
     result = 2 * x - 1; 
    end 
end 

和一個函數句柄傳遞給fsurf

fsurf(@xval, ...) 

或者你可以定義x使用功能

x = (-1)^(s > 0.5) * (1 - 2*s) 
+0

是否有可能操縱的一點點使用'syms'定義分段函數進行分段?例如,假設'x =(1-2s)'s = 0:.5'和'x = 2s-1' for s = .5:1' –

+0

@MikeJamesJohnson更新了一些片段選項功能 – Suever