Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

collisionMesh

Cree una geometría de colisión en forma de malla convexa

Desde R2019b

Descripción

Utilice collisionMesh para crear una geometría de colisión como una malla convexa.

Creación

Descripción

ejemplo

MSH = collisionMesh(Vertices) crea una geometría de colisión de malla convexa a partir de la lista de Vertices 3-D. Los vértices se especifican con relación a un marco de elección (marco de geometría de colisión). De forma predeterminada, el marco de la geometría de colisión se conecta con el marco del mundo real.

MSH = collisionMesh(___,Pose=pose) establece la propiedad Pose de la malla en pose, en relación con el marco mundial.

Propiedades

expandir todo

Vértices de una malla, especificados como un arreglo N por 3, donde N es el número de vértices. Cada fila de Vertices representa las coordenadas de un punto en el espacio 3-D. Tenga en cuenta que algunos de los puntos pueden estar dentro de la malla convexa construida.

Tipos de datos: double

Pose de la geometría de colisión relativa al marco mundial, especificada como una matriz homogénea de 4 por 4 o un objeto se3 . Puede cambiar la pose después de crear la geometría de colisión.

Nota

Tenga en cuenta que cuando la pose se especifica como un objeto se3 , la propiedad Pose almacena la pose como una matriz numérica de 4 por 4.

Tipos de datos: single | double

Funciones del objeto

showMuestre la geometría de colisión
fitCollisionCapsuleAjustar la cápsula de colisión alrededor de la geometría de colisión

Ejemplos

contraer todo

Cree un arreglo compuesto por las coordenadas de diez puntos elegidos aleatoriamente en la esfera unitaria. Para que sea reproducible, establezca el valor inicial aleatoria en el valor predeterminado.

rng default
n = 10;
pts = zeros(n,3);
for k = 1:n
    ph = 2*pi*rand(1);
    th = pi*rand(1);
    pts(k,:) = [cos(th)*sin(ph) sin(th)*sin(ph) cos(ph)];
end

Cree una geometría de colisión en forma de malla convexa a partir del arreglo. Visualice la geometría de colisión.

m = collisionMesh(pts);
show(m)

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type patch.

Cree un segundo arreglo similar al primero, pero esta vez compuesto por 1000 puntos elegidos aleatoriamente en la esfera unitaria.

n = 1000;
pts2 = zeros(n,3);
for k = 1:n
    ph = 2*pi*rand(1);
    th = pi*rand(1);
    pts2(k,:) = [cos(th)*sin(ph) sin(th)*sin(ph) cos(ph)];
end

Cree y visualice una geometría de colisión en forma de malla a partir del arreglo. Observe que al elegir más puntos en la esfera se obtiene una malla similar a una esfera.

m2 = collisionMesh(pts2);
show(m2)

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type patch.

Cree un arreglo compuesto por las coordenadas de las ocho esquinas de un cubo. El cubo está centrado en el origen y tiene una longitud lateral de 4.

cubeCorners = [-2 -2 -2 ; -2 2 -2 ; 2 -2 -2 ; 2 2 -2 ;...
    -2 -2 2 ; -2 2 2 ; 2 -2 2 ; 2 2 2]
cubeCorners = 8×3

    -2    -2    -2
    -2     2    -2
     2    -2    -2
     2     2    -2
    -2    -2     2
    -2     2     2
     2    -2     2
     2     2     2

Agregue cubeCorners a pts2. Cree y visualice la geometría de colisión en forma de malla a partir del arreglo nuevo. Dado que el cubo contiene la esfera, los puntos de la esfera que están dentro del cubo no se tienen en cuenta al crear la geometría.

pts3 = [pts2;cubeCorners];
m3 = collisionMesh(pts3);
show(m3)

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type patch.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2019b

expandir todo

Consulte también

Objetos

Funciones