Contenu principal

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

collisionMesh

Créer une géométrie de collision de maillage convexe

Description

Utilisez collisionMesh pour créer une géométrie de collision sous forme de maillage convexe.

Création

Description

MSH = collisionMesh(Vertices) crée une géométrie de collision de maillage convexe à partir de la liste des 3-D Vertices. Les sommets sont spécifiés par rapport à un cadre de choix (cadre de géométrie de collision). Par défaut, le cadre géométrique de collision est colocalisé avec le cadre mondial.

exemple

MSH = collisionMesh(___,Pose=pose) définit la propriété Pose du maillage sur pose, par rapport au cadre mondial.

Propriétés

développer tout

Sommets d'un maillage, spécifiés sous la forme d'un tableau N-par 3, où N est le nombre de sommets. Chaque ligne de Vertices représente les coordonnées d'un point dans l'espace 3D. Notez que certains points peuvent se trouver à l’intérieur du maillage convexe construit.

Types de données : double

Pose de la géométrie de collision par rapport au référentiel mondial, spécifiée comme une matrice homogène 4 x 4 ou un objet se3 . Vous pouvez modifier la pose après avoir créé la géométrie de collision.

Remarque

Notez que lorsque la pose est spécifiée en tant qu'objet se3 , la propriété Pose stocke la pose sous forme de matrice numérique 4 x 4.

Types de données : single | double

Fonctions d'objet

showAfficher la géométrie des collisions
fitCollisionCapsuleAjuster la capsule de collision autour de la géométrie de collision

Exemples

réduire tout

Créez un tableau composé des coordonnées de dix points choisis au hasard sur la sphère unitaire. Pour des raisons de reproductibilité, définissez la valeur de départ aléatoire sur la valeur par défaut.

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

Créez une géométrie de collision de maillage convexe à partir du tableau. Visualisez la géométrie de la collision.

m = collisionMesh(pts);
show(m)

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

Créez un deuxième tableau similaire au premier, mais cette fois composé de 1000 points choisis aléatoirement sur la sphère unitaire.

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

Créez et visualisez une géométrie de collision de maillage à partir du tableau. Observez que le choix de plus de points sur la sphère donne lieu à un maillage semblable à une sphère.

m2 = collisionMesh(pts2);
show(m2)

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

Créez un tableau composé des coordonnées des huit coins d'un cube. Le cube est centré à l’origine et a un côté de longueur 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

Ajoutez cubeCorners à pts2. Créez et visualisez la géométrie de collision de maillage à partir du nouveau tableau. Étant donné que le cube contient la sphère, les points de la sphère situés à l'intérieur du cube ne sont pas pris en compte lors de la création de la géométrie.

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.

Capacités étendues

développer tout

Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.

Historique des versions

Introduit dans R2019b

développer tout

Voir aussi

Objets

Fonctions