exponenta event banner

collisionMesh

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

Описание

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

Создание

Описание

пример

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

Свойства

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

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

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

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

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

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

showПоказать геометрию коллизий

Примеры

свернуть все

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

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

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

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++ с помощью MATLAB ® Coder™

.
Представлен в R2019b