30.3 凸包

点集的凸包是包含所有点的最小凸包络。Octave 提供了 convhullconvhulln 函数来计算二维和 N 维点集的凸包。

 
H = convhull (x, y)
H = convhull (x, y, z)
H = convhull (x)
H = convhull (…, options)
[H, V] = convhull (…)

计算二维或三维点集的凸包。

凸包 H 是一个指向原始点集的线性索引向量,指定哪些点构成包围凸包。仅对于二维输入,输出围绕凸包按逆时针方向排序。

输入 x 也可以是具有两列或三列的矩阵,其中第一列包含 x 数据,第二列包含 y 数据,可选的第三列包含 z 数据。

可选的最后一个参数必须是字符串或字符串元胞数组,其中包含传递给底层 qhull 命令的选项。有关详细信息,请参阅 Qhull 库的文档 http://www.qhull.org/html/qh-quick.htm#options。 默认选项是 {"Qt"}

如果 options 不存在或为 [],则使用默认参数。否则,options 替换默认参数列表。要将用户选项附加到默认值,需要在 options 中重复默认参数。使用空字符串表示不传递任何参数。

如果请求第二个输出 V,则计算包围凸包的体积。

另请参阅: convhullndelaunayvoronoi

 
h = convhulln (pts)
h = convhulln (pts, options)
[h, v] = convhulln (…)

计算点集 pts 的凸包。

pts 是一个大小为 [n, dim] 的矩阵,包含维度为 dim 的空间中的 n 个点。

凸包 h 是一个指向点集的索引向量,指定哪些点构成包围凸包。

可选的第二个参数必须是字符串或字符串元胞数组,其中包含传递给底层 qhull 命令的选项。有关详细信息,请参阅 Qhull 库的文档 http://www.qhull.org/html/qh-quick.htm#options。 默认选项取决于输入的维度:

  • 2-D、3-D、4-D:options = {"Qt"}
  • 5-D 及更高维度:options = {"Qt", "Qx"}

如果 options 不存在或为 [],则使用默认参数。否则,options 替换默认参数列表。要将用户选项附加到默认值,需要在 options 中重复默认参数。使用空字符串表示不传递任何参数。

如果请求第二个输出 v,则计算包围凸包的体积。

另请参阅: convhulldelaunaynvoronoin

convhull 的使用示例如下:

x = -3:0.05:3;
y = abs (sin (x));
k = convhull (x, y);
plot (x(k), y(k), "r-", x, y, "b+");
axis ([-3.05, 3.05, -0.05, 1.05]);

上述输出可在 图 30.5 中查看。

convhull

图 30.5:简单点集的凸包


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-4