【问题标题】:Getting Coordinates of Polygon Using Matlab使用 Matlab 获取多边形的坐标
【发布时间】:2015-09-20 11:28:01
【问题描述】:

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

(1) 我想获取矩形内多边形的坐标(顺时针或逆时针方向的坐标) 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

【问题讨论】:

  • 删除矩形外的线条究竟是什么意思?部分线路还是全部开放线路?

标签: matlab geometry polygon voronoi


【解决方案1】:

你可以在这里使用,

[V,C] = voronoin(X) 

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

获得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

结果如下:

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
  • 2012-07-05
  • 1970-01-01
  • 2011-04-19
相关资源
最近更新 更多