2012-08-28 55 views
1

使用MATLAB的填充函數創建了由一個多邊形與直線邊緣密閉填充區域:如何填寫在該地區的兩條線和曲線直不是在MATLAB之間(該區域是不是多邊形)

enter image description here

不幸的是,這在上圖中留下了一個小的白色區域,因爲我想填充的區域的邊界不是直邊多邊形,而是在左側具有彎曲的邊界。我有一條曲線(接近拋物線但不完全),我想填充兩條水平線和曲線本身之間的區域。我還研究了MATLAB函數IMFILL,但沒有運氣。

+2

試試['imfill'(HTTP:// WWW。 mathworks.com/help/toolbox/images/ref/imfill.html) – chaohuang

+0

對不起,當我寫我試圖IMREAD我的意思是IMFILL。我現在編輯了這個問題。 – user1271772

回答

1

你需要做的是讓更多的四個角的多邊形,所以它適合曲線更流暢:

%# create a parabola and two straight lines 
x = -3:0.1:3; 
y = x.^2/4; 
plot(x,y) 
hold on, plot([-3 3],[1 1],'r',[-3 3],[2 2],'r') 

%# create a polygon that hugs the parabola 
%# note that we need to interpolate separately 
%# for positive and negative x 
x1 = interp1(y(x<0),x(x<0),1:0.1:2); 
%# interpolate in reverse so that the corners are properly ordered 
x2 = interp1(y(x>0),x(x>0),2:-0.1:1); 

%# fill the area bounded by the three lines 
fill([x1,x2],[1:0.1:2,2:-0.1:1],'g') 

enter image description here

+0

謝謝!我想要製作一個多邊形的角落,但如果不是你的建議使用interp1 =),它不會很快完成它。如果作爲輸入我可以給出曲線和線,有一個函數可以填充這些區域之間的空間,但也許MATLAB沒有這樣的內置函數。 – user1271772

相關問題