Main Content

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.

Creación

Descripción

ejemplo

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.

Propiedades

expandir todo

Vértices de una malla, especificados como un arreglo 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

La pose de la geometría de colisión respecto al marco del mundo real, especificada como una matriz homogénea de 4 por 4. Puede cambiar la pose después de crear la geometría de colisión.

Tipos de datos: double

Funciones del objeto

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

Añada 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 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