【发布时间】:2016-08-21 22:06:43
【问题描述】:
我有一组点和一组线段。我想根据这些线段将点集拆分为子集或集群。最终,我正在寻找每个子集的凸包(右图中显示的橙色多边形)。尽管下例中的线段相互连接,但并非总是如此。我猜该方法应该从所有点(左侧显示的橙色多边形)构造一个凸包,然后在与线段的交点处分割凸包,并以某种方式将“内部”点包含在新的凸包中船体(即下面示例中的点 1、2、3 和 4)。
points = [-0.1325 -2.2267; -0.1525 -2.2267; -0.5319 1.0698; -1.3628 -0.1296; 1.7438 1.3784; 1.5770 0.9458; 0.5147 -2.6114; 0.8169 -2.2797; -1.0244 2.7143; -0.4422 2.8257; -1.7421 -2.4453; -2.4492 -0.4012]
linesegments = [-1.1258 -4.2270 -0.7196 -3.9662; -0.7196 -3.9662 0.4347 -0.4873; -2.3293 1.4275 -3.3717 2.2654; -2.3293 1.4275 0.4347 -0.4873; 1.3579 3.1700 3.3566 0.5079; 3.3566 0.5079 0.4347 -0.4873] % Each row is line with format [x1 y1 x2 y2];
在这个例子中,有 12 个点和 6 个线段。点 1 和 2 的位置相当接近,但点 2 稍微偏左,点 1 稍微偏右。每个子集的凸包为:
ch1 = [9 10 5 6 3 9];
ch2 = [12 4 2 11 12];
ch3 = [1 8 7 1];
【问题讨论】:
-
你可以看看
WhatIf包和相关论文不确定它们是否直接适用,但它是一个镜头。
标签: r matlab cluster-analysis subset