查找图形的边框边缘

9意见(过去30天)
NA.
NA. 20月12日
评论: Christine Tobler. 于2020年5月14日
我有一个像这样的图,我如何找到边界边缘。
m = [1 8;7 8;1 7;7 6;1 6;1 5;4 5;1 3;2 3;1 2; 1 4];
布局= [3 2;5 2;5 4;6 1;6 6;4 6;2 4;1 1];
g =图(m(:,1),m(:,2));
h = plot(g);
h.xdata =布局(:,1);
H.YDATA =布局(:,2);
该图中的边界边缘是(1,8),(8,7),(7,6),(6,1),(5,4),(4,1)
结果应该是:
border_edges = [1,8;8,7;7,6;6,1;1,5;5,4;4,1]
另一个问题是,我如何找到带有2个边的节点?
node_with_two_edges = [8;6;5;4;2;3]

接受答案

Christine Tobler.
Christine Tobler. 20月12日
图表类没有基于点的坐标的函数 - 它只知道它们的连接。使用Convex Hull找到侧在边框上的节点:
>> k = convhull(布局(:,1),布局(:,2));
>>绘图(布局(:,1),布局(:,2),'X');抓住;绘图(布局(k,1),布局(k,2),'O-'
用于查找具有2个边缘的所有节点,使用 学位(g)== 2
4评论
Christine Tobler.
Christine Tobler. 于2020年5月14日
好的,所以我不确定如何定义这一般的问题。我们可以说,图表中的每个简单周期代表多边形,只有在这些多边形中的一个或多个内部时,才不在边界上。这里,一个简单的循环是一个节点列表,其中每个连续对由边缘连接,没有重复节点,最后一个节点连接回第一。
但是,可以拥有一个不形成简单多边形的循环,因为线路相交。这是一个例子:
是否有一些关于您正在查看的数据,这使得这不可能发生这种情况?或者如果不是,你想如何对待这种情况?
你可能看看了 Polyshape. 类,感觉就像它可能与您正在使用的数据类型更相关。

登录评论。

更多答案(0)

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!