collisionMesh

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

Описание

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

Создание

Описание

пример

MSH = collisionMesh(Vertices) создает сетчатую выпуклую геометрию столкновения из списка 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

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

m = collisionMesh(pts);
show(m)

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

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

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.

m2 = collisionMesh(pts2);
show(m2)

Figure contains an axes. The axes 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. Создайте и визуализируйте сетчатую геометрию столкновения из нового массива. Поскольку кубик содержит сферу, точки сферы, которые являются внутренними к кубу, игнорируются при создании геометрии.

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

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

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

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

.
Введенный в R2019b