Contenido principal

convhull

Envolvente convexa

Descripción

k = convhull(P) calcula la envolvente convexa 2D o 3D de los puntos de la matriz P.

ejemplo

k = convhull(x,y) calcula la envolvente convexa 2D de los puntos de los vectores columna x e y.

k = convhull(x,y,z) calcula la envolvente convexa 3D de los puntos de los vectores columna x, y y z.

ejemplo

k = convhull(___,'Simplify',tf) especifica si se eliminan los vértices que no contribuyen al área o al volumen de la envolvente convexa. tf tiene el valor false de forma predeterminada.

ejemplo

[k,av] = convhull(___) también calcula el área (para puntos 2D) o el volumen (para puntos 3D) de la envolvente convexa.

ejemplo

Ejemplos

contraer todo

Cree una matriz de puntos 2D. Calcule la envolvente convexa y su área.

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);

Represente los puntos originales y la envolvente convexa.

plot(P(:,1),P(:,2),'*')
hold on
plot(P(k,1),P(k,2))

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

Muestre el área.

av
av = 
1.7500

Simplifique una envolvente convexa 3D eliminando los puntos que no afectan a su volumen.

Cree un conjunto de puntos 3D. Calcule la envolvente convexa y su volumen. Represente la envolvente convexa.

[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

Figure contains an axes object. The axes object contains an object of type patch.

Calcule y represente una versión simplificada de la envolvente convexa que contenga menos puntos, pero que conserve el volumen.

[k2,av2] = convhull(x,y,z,'Simplify',true);

trisurf(k2,x,y,z,'FaceColor','cyan')
axis equal

Figure contains an axes object. The axes object contains an object of type patch.

Muestre los volúmenes de ambas envolventes convexas. Los volúmenes son los mismos, pero la envolvente convexa simplificada utiliza menos puntos.

av1
av1 = 
64.0000
av2
av2 = 
64

Argumentos de entrada

contraer todo

Puntos, especificados como una matriz cuyas columnas son las coordenadas x, las coordenadas y y (en tres dimensiones) las coordenadas z.

Coordenadas x, especificadas como vector columna.

Coordenadas y, especificadas como vector columna.

Coordenadas z, especificadas como vector columna.

Indicador de simplificación, especificado como 0 (false) o 1 (true) numérico o lógico.

Argumentos de salida

contraer todo

Índices, devueltos como un vector o una matriz.

  • Para puntos 2D, k es un vector columna que contiene los índices fila de los puntos de entrada que componen la envolvente convexa, ordenados en sentido contrario a las agujas del reloj.

  • Para puntos 3D, k es una matriz de 3 columnas que representa una triangulación que compone la envolvente convexa. Cada fila representa una faceta de la triangulación. Los valores representan los índices de fila de los puntos de entrada.

Área o volumen de la envolvente convexa, devuelto como un escalar.

  • Para puntos 2D, av es el área de la envolvente convexa.

  • Para puntos 3D, av es el volumen de la envolvente convexa.

Sugerencias

  • Para representar la salida de convhull en dos dimensiones, utilice la función plot. Para representar la salida de convhull en tres dimensiones, utilice trisurf o trimesh.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido antes de R2006a

Consulte también