帮助中心帮助中心
凸包
k = convhull(P)
k = convhull(x,y)
k = convhull(x,y,z)
k = convhull(___,'Simplify',tf)
[k,av] = convhull(___)
示例
k = convhull(P) 计算矩阵 P 中点的二维或三维凸包。
k
P
k = convhull(x,y) 计算列向量 x 和 y 中点的二维凸包。
x
y
k = convhull(x,y,z) 计算列向量 x、y 和 z 中点的三维凸包。
z
k = convhull(___,'Simplify',tf) 指定是否删除不影响凸包面积或体积的顶点。默认情况下,tf 为 false。
tf
false
[k,av] = convhull(___) 还计算凸包的面积(对于二维点)或体积(对于三维点)。
av
全部折叠
创建一个由二维点组成的矩阵。计算凸包及其面积。
P = [0 0; 1 1; 1.5 0.5; 1.5 -0.5; 1.25 0.3; 1 0; 1.25 -0.3; 1 -1]; [k,av] = convhull(P);
绘制原始点及凸包。
plot(P(:,1),P(:,2),'*') hold on plot(P(k,1),P(k,2))
显示面积。
av = 1.7500
通过删除不影响其体积的点来简化三维凸包。
创建一个三维点集。计算凸包及其体积。绘制凸包图。
[x,y,z] = meshgrid(-2:1:2,-2:1:2,-2:1:2); x = x(:); y = y(:); z = z(:); [k1,av1] = convhull(x,y,z); trisurf(k1,x,y,z,'FaceColor','cyan') axis equal
计算并绘制包含较少点但保持体积不变的凸包的简化版本。
[k2,av2] = convhull(x,y,z,'Simplify',true); trisurf(k2,x,y,z,'FaceColor','cyan') axis equal
显示两个凸包的体积。两者体积相同,但简化的凸包使用的点更少。
av1
av1 = 64.0000
av2
av2 = 64
点,指定为矩阵,该矩阵的列为 x 坐标、y 坐标和(三维情况下)z 坐标。
x 坐标,指定为列向量。
y 坐标,指定为列向量。
z 坐标,指定为列向量。
0
true
1
简化指示符,指定为数值或逻辑值 0 (false) 或 1 (true)。
索引,以向量或矩阵形式返回。
对于二维点,k 是一个列向量,其中包含构成凸包的输入点的行索引,按逆时针排列。
对于三维点,k 是表示构成凸包的三角剖分的三列矩阵。每行表示三角剖分的一个分面。值表示输入点的行索引。
凸包的面积或体积,以标量形式返回。
对于二维点,av 是凸包的面积。
对于三维点,av 是凸包的体积。
要以二维形式绘制 convhull 的输出,请使用 plot 函数。要以三维形式绘制 convhull 的输出,请使用 trisurf 或 trimesh 函数。
convhull
plot
trisurf
trimesh
用法说明和限制:
代码生成仅支持二维输入点的凸包计算。
backgroundPool
ThreadPool
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
在 R2006a 之前推出
convhulln
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Contact your local office