2017-05-28 10 views
1

delaunay関数を使用して領域L =(-1,1)^ 2 \ [0,1)^ 2を三角形分割したいが、それを動作させるように見えない。L字型領域の三角形分割

私は単にLの左側の矩形領域に関数meshgridを使用して何をしたか

[x_left, y_left] = meshgrid(-1:0.25:0,-1:0.25:1) 

と第四象限で正方形領域上:

[x_right, y_right] = meshgrid(0:0.25:1,-1:0.25:1) 

次に連結2つの関数を呼び出し、その2つのdelaunay関数を呼び出しますが、これは意図した結果が得られません。点(1,0)と(0,1)を結ぶ三角形の側面。

誰もこのL字型領域を三角形分割する方法を知っていますか?

答えて

3

Iは、L字状に含まれる三角形の中心を見つけるためinpolygonを使用:

% generate grid on [-1 1] interval 
[xg,yg] = meshgrid(linspace(-1,1)); 
% coordinates of L corners 
x = [-1 0 0 1 1 -1].'; 
y = [-1 -1 0 0 1 1].'; 
% generate L binary mask using inpolygon 
[IN,ON] = inpolygon(xg,yg,x,y); 
bw = IN | ON; 
% triangulate L corners 
TRI = delaunay(x,y); 
% get trinagle centers coordinates 
c = [mean(x(TRI),2) mean(y(TRI),2)]; 
% check if centers inside L 
IN = inpolygon(c(:,1),c(:,2),x,y); 
% remove triangles whose centers outside L 
TRI = TRI(IN,:); 
% visualize 
imshow(bw,'XData',[-1 1],'YData',[-1 1],'InitialMagnification','fit'); 
hold on; 
triplot(TRI,x,y,'LineWidth',2); 

enter image description here

関連する問題