Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. 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

Descripción

Utilice collisionMesh para crear una geometría de colisión como una malla convexa usando una lista de vértices 3D relativa al marco elegido.

Creación

Descripción

MSH = collisionMesh(Vertices) crea una geometría de colisión en forma de malla convexa a partir de la lista de Vertices 3D. 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.

ejemplo

MSH = collisionMesh(___,Pose=pose) establece la propiedad Pose de la malla en pose, relativa al marco del mundo real.

Propiedades

expandir todo

Vértices de una malla, especificados como una matriz de 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 3D. 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 respecto al marco del mundo real, 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

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

Tipos de datos: single | double

Funciones del objeto

checkCollisionComprobar si dos geometrías están en colisión
fitCollisionCapsuleFit collision capsule around collision geometry
showMuestre 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

Adjunte 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

expandir todo

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

Historial de versiones

Introducido en R2019b

expandir todo