collisionMesh

Создайте сетчатую выпуклую геометрию столкновения

Описание

Используйте collisionMesh создать геометрию столкновения как выпуклую mesh.

Создание

Описание

пример

MSH = collisionMesh(Vertices) создает выпуклую геометрию столкновения mesh из списка 3-D Вершин. Вершины заданы относительно предпочтительной системы координат (система координат геометрии столкновения). По умолчанию система координат геометрии столкновения располагает с мировой системой координат.

Свойства

развернуть все

Вершины mesh в виде N-by-3 массив, где N является количеством вершин. Каждая строка Vertices представляет координаты точки в трехмерном пространстве. Обратите внимание на то, что некоторые точки могут быть в созданной выпуклой mesh.

Типы данных: double

Положение геометрии столкновения относительно мировой системы координат в виде гомогенной матрицы 4 на 4. Можно изменить положение после того, как вы создадите геометрию столкновения.

Типы данных: double

Функции объекта

showПокажите геометрию столкновения

Примеры

свернуть все

Создайте массив, состоящий из координат десяти точек, случайным образом выбранных на сфере единичного радиуса. Для воспроизводимости установите случайный seed на значение по умолчанию.

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

Создайте выпуклую геометрию столкновения mesh из массива. Визуализируйте геометрию столкновения.

m = collisionMesh(pts);
show(m)

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

Создайте второй массив, похожий на первое, но на этот раз состоящий из 1 000 точек, случайным образом выбранных на сфере единичного радиуса.

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

Создайте и визуализируйте геометрию столкновения mesh из массива. Заметьте, что выбор большего количества точек на сфере приводит к подобной сфере mesh.

m2 = collisionMesh(pts2);
show(m2)

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

Создайте массив, состоящий из координат восьми углов куба. Куб строится в начале координат и имеет длину стороны 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

Добавьте cubeCorners к pts2. Создайте и визуализируйте геометрию столкновения mesh из нового массива. Поскольку куб содержит сферу, точки сферы, которые являются внутренними к кубу, игнорируются при создании геометрии.

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

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

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2019b
Для просмотра документации необходимо авторизоваться на сайте