Как правильно использовать функцию AABB.signed_distance () в LibIGL? - PullRequest
0 голосов
/ 03 октября 2018

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

// load a mesh
 std::ifstream fileStream;
 std::string filePath = R"(C:\path\to\stl\1x1x1Cube.stl)";
 Eigen::MatrixXd Vs;
 Eigen::MatrixXi Fs;
 Eigen::MatrixXd Ns;
 igl::readSTL(filePath, Vs, Fs, Ns);

 // build the AABB tree for the mesh
 igl::AABB<Eigen::MatrixXd, 3> tree;
 tree.init(Vs, Fs);

 Eigen::MatrixXd queryPoint = (Eigen::MatrixXd(1, 3) << 0.5, 0.5, 0.5).finished();
 Eigen::VectorXd sqrD;
 {
   Eigen::VectorXi I;
   Eigen::VectorXd C;
   tree.squared_distance(Vs, Fs, queryPoint, sqrD, I, C);
 }

Однако, когда я запускаю этот код, он завершается неудачно при вызове tree.squared_distance().Это не удалось утверждать где-то глубоко внутри Эйгена.Неудачное утверждение находится в библиотеке Eigen, в Block.h, когда он пытается запустить конструктор динамического размера inline Block().

. Для чего стоит утверждение, которое терпит неудачу: eigen_assert(a_startRow <= xpr.rows() - blockRows)

Я новичок в LibIgl и Eigen.Есть ли что-то очевидное, чего мне не хватает?

...