使用Matlab获取多边形坐标

时间:2015-09-20 11:28:02

标签: matlab geometry polygon voronoi

我有使用Matlab生成的以下图表。使用Voronoi函数生成红线,使用矩形函数生成黑色矩形框。

(1)我想得到矩形内的多边形坐标(顺时针或ccw方向的坐标) Matlab代码如下:

a=12.5e-3;
b=30e-3;
vcellsx=[0.0105089656997958,0.00245744063039010,0.00770055845183299,0.00439574383828746,0.00946500286388402];
vcellsy=[0.00762846536914593,0.00753251573928093,0.0141986654670819,0.0249248588368887,0.0226118728283549];

[vx,vy]=voronoi(vcellsx,vcellsy);
plot(vx,vy,'r-','LineWidth', 2);

hold on
rectangle('Position',[0 0 a b])

[编辑] 我正在寻找域的坐标,如图所示。  https://drive.google.com/file/d/0BzxYGJhdC2A4Vl9jUTVDU204NEk/view

1 个答案:

答案 0 :(得分:0)

您可以在这里使用,

[V,C] = voronoin(X) 

返回V的Voronoi图的Voronoi顶点C和Voronoi单元格X的函数。

获得C后,您必须检查不包含1的单元格,因为包含1的单元格代表开放区域。

最后,可以在v(c{i},1),v(c{i},2)找到角落。

您可以将以下代码添加到代码的末尾。

x = [vcellsx' vcellsy'];
[v,c] = voronoin(x);
for i = 1:length(c)
    if all(c{i}~=1)
        patch(v(c{i},1),v(c{i},2),i); % use color i.
    end
end

结果如下:

enter image description here