Класс класс многопоточного коллайдера Класс класс многопоточного коллайдера. Он является надстройкой над массивом однопоточных коллайдеров заданной длины. Каждому колладйеру соответствует свой мьютекс. При обращении к методу проверки коллизий происходит поиск первого незанятого мьютекса, он блокируется, запускается проверка коллизии с помощью соответствующего коллайдера, после чего мьютекс освобождается. Если все мьютексы заняты, то после паузы в одну микросекунду поиск свободного мьютекса запускается заново, пока проверка не будет выполнена. Остальные методы просто пробрасывают обращение к первому однопоточному коллайдеру
More...
#include <solid_sync_collider.h>
|
| SolidSyncCollider (unsigned int mutexCnt) |
|
void | init (std::vector< std::vector< std::string >> groupedModelPaths, bool subColliders) override |
|
void | paint (std::vector< Eigen::Matrix4d > matrices, bool onlyRobot) override |
|
bool | isCollided (std::vector< Eigen::Matrix4d > matrices) override |
|
std::vector< float > | getPoints (std::vector< Eigen::Matrix4d > matrices) override |
|
std::vector< double > | getBoxCoords (unsigned long robotNum, std::vector< Eigen::Matrix4d > matrices) override |
| получить координаты куба, ограничивающего объём робота получить координаты куба, ограничивающего объём, в котором помещён робот с индексом robotNum, если задать его звеньям матрицы трансформации из списка всех матриц трансформации звеньев сцены, возвращает список из шести координат: min.x(), min.y(), min.z(), max.x(), max.y(), max.z() More...
|
|
std::vector< double > | getBoxPoints (unsigned long robotNum, std::vector< Eigen::Matrix4d > matrices) override |
| получить точки куба, ограничивающего объём робота получить точки куба, ограничивающего объём, в котором помещён робот с индексом robotNum, если задать его звеньям матрицы трансформации из списка всех матриц трансформации звеньев сцены, возвращает список из точек, по которым построится куб линиями GL_LINES ax, ay, az, bx, by, bz. More...
|
|
bool | isCollided (std::vector< Eigen::Matrix4d > matrices, std::vector< int > robotIndexes) override |
| проверка соответствует ли состояние сцены столкновению проверка соответствует ли состояние сцены (список матриц преобразований звеньев только для задействованных объектов) столкновению при этом учитываются только объекты с индексами из robotIndexes. More...
|
|
Класс класс многопоточного коллайдера Класс класс многопоточного коллайдера. Он является надстройкой над массивом однопоточных коллайдеров заданной длины. Каждому колладйеру соответствует свой мьютекс. При обращении к методу проверки коллизий происходит поиск первого незанятого мьютекса, он блокируется, запускается проверка коллизии с помощью соответствующего коллайдера, после чего мьютекс освобождается. Если все мьютексы заняты, то после паузы в одну микросекунду поиск свободного мьютекса запускается заново, пока проверка не будет выполнена. Остальные методы просто пробрасывают обращение к первому однопоточному коллайдеру
◆ SolidSyncCollider()
SolidSyncCollider::SolidSyncCollider |
( |
unsigned int |
mutexCnt | ) |
|
|
explicit |
конструктор
- Parameters
-
mutexCnt | количество мьютексов |
◆ getBoxCoords()
std::vector<double> bmpf::SolidSyncCollider::getBoxCoords |
( |
unsigned long |
robotNum, |
|
|
std::vector< Eigen::Matrix4d > |
matrices |
|
) |
| |
|
inlineoverridevirtual |
получить координаты куба, ограничивающего объём робота получить координаты куба, ограничивающего объём, в котором помещён робот с индексом robotNum, если задать его звеньям матрицы трансформации из списка всех матриц трансформации звеньев сцены, возвращает список из шести координат: min.x(), min.y(), min.z(), max.x(), max.y(), max.z()
- Parameters
-
robotNum | номер робота в списке роботов |
matrices | список матриц преобразований звеньев |
- Returns
- получить координаты куба, ограничивающего объём робота
Implements bmpf::Collider.
◆ getBoxPoints()
std::vector<double> bmpf::SolidSyncCollider::getBoxPoints |
( |
unsigned long |
robotNum, |
|
|
std::vector< Eigen::Matrix4d > |
matrices |
|
) |
| |
|
inlineoverridevirtual |
получить точки куба, ограничивающего объём робота получить точки куба, ограничивающего объём, в котором помещён робот с индексом robotNum, если задать его звеньям матрицы трансформации из списка всех матриц трансформации звеньев сцены, возвращает список из точек, по которым построится куб линиями GL_LINES ax, ay, az, bx, by, bz.
- Parameters
-
robotNum | номер робота в списке роботов |
matrices | список матриц преобразований звеньев |
- Returns
- получить точки куба, ограничивающего объём робота
Implements bmpf::Collider.
◆ getPoints()
std::vector<float> bmpf::SolidSyncCollider::getPoints |
( |
std::vector< Eigen::Matrix4d > |
matrices | ) |
|
|
inlineoverridevirtual |
возвращает список всех координат полигона (вектор нормали и координаты вершины): nx, ny, nz, ax, ay, az, bx, by, bz, cx, cy, cz по списку матриц состояния
- Parameters
-
matrices | список матриц преобразований звеньев |
- Returns
- возвращает список всех координат полигона
Implements bmpf::Collider.
◆ init()
void SolidSyncCollider::init |
( |
std::vector< std::vector< std::string >> |
groupedModelPaths, |
|
|
bool |
subColliders |
|
) |
| |
|
overridevirtual |
инициализация коллайдера
- Parameters
-
groupedModelPaths | вектор векторов путей к моделям. это связано с тем, что сцена строится на основе набора описаний роботов каждый из них содержит список путей к своим моделям |
subColliders | флаг, нудно ли составить виртуальные сцены для каждого подмножества объектов сцены |
Implements bmpf::Collider.
◆ isCollided() [1/2]
bool SolidSyncCollider::isCollided |
( |
std::vector< Eigen::Matrix4d > |
matrices | ) |
|
|
overridevirtual |
проверка соответствует ли состояние сцены столкновению
- Parameters
-
matrices | список матриц преобразований звеньев |
- Returns
- флаг, соответствует ли состояние сцены столкновению
Implements bmpf::Collider.
◆ isCollided() [2/2]
bool SolidSyncCollider::isCollided |
( |
std::vector< Eigen::Matrix4d > |
matrices, |
|
|
std::vector< int > |
robotIndexes |
|
) |
| |
|
overridevirtual |
проверка соответствует ли состояние сцены столкновению проверка соответствует ли состояние сцены (список матриц преобразований звеньев только для задействованных объектов) столкновению при этом учитываются только объекты с индексами из robotIndexes.
- Parameters
-
matrices | список матриц преобразований звеньев |
robotIndexes | индексы роботов |
- Returns
- флаг, соответствует ли состояние сцены столкновению
Implements bmpf::Collider.
◆ paint()
void bmpf::SolidSyncCollider::paint |
( |
std::vector< Eigen::Matrix4d > |
matrices, |
|
|
bool |
onlyRobot |
|
) |
| |
|
inlineoverridevirtual |
рисование сцены коллайдера
- Parameters
-
matrices | список матриц преобразования из текущей СК звена в следующую |
onlyRobot | флаг, нужно ли рисовать только роботов или ещё и статические объекты сцены |
Implements bmpf::Collider.
◆ MAX_MUTES_CNT
const static int bmpf::SolidSyncCollider::MAX_MUTES_CNT = 60 |
|
static |
максимальное количество потоков
The documentation for this class was generated from the following files: