使用MATLAB的填充函數創建了由一個多邊形與直線邊緣密閉填充區域:如何填寫在該地區的兩條線和曲線直不是在MATLAB之間(該區域是不是多邊形)
不幸的是,這在上圖中留下了一個小的白色區域,因爲我想填充的區域的邊界不是直邊多邊形,而是在左側具有彎曲的邊界。我有一條曲線(接近拋物線但不完全),我想填充兩條水平線和曲線本身之間的區域。我還研究了MATLAB函數IMFILL,但沒有運氣。
使用MATLAB的填充函數創建了由一個多邊形與直線邊緣密閉填充區域:如何填寫在該地區的兩條線和曲線直不是在MATLAB之間(該區域是不是多邊形)
不幸的是,這在上圖中留下了一個小的白色區域,因爲我想填充的區域的邊界不是直邊多邊形,而是在左側具有彎曲的邊界。我有一條曲線(接近拋物線但不完全),我想填充兩條水平線和曲線本身之間的區域。我還研究了MATLAB函數IMFILL,但沒有運氣。
你需要做的是讓更多的四個角的多邊形,所以它適合曲線更流暢:
%# 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')
謝謝!我想要製作一個多邊形的角落,但如果不是你的建議使用interp1 =),它不會很快完成它。如果作爲輸入我可以給出曲線和線,有一個函數可以填充這些區域之間的空間,但也許MATLAB沒有這樣的內置函數。 – user1271772
試試['imfill'(HTTP:// WWW。 mathworks.com/help/toolbox/images/ref/imfill.html) – chaohuang
對不起,當我寫我試圖IMREAD我的意思是IMFILL。我現在編輯了這個問題。 – user1271772