如何正确使用LibIGL的AABB.signed_distance()函数?

时间:2018-10-02 22:07:42

标签: c++ eigen libigl

我正在尝试使用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内部深处的断言失败了。尝试运行动态大小构造函数inline Block()时,失败的断言位于Eigen库的Block.h中。

就其价值而言,失败的断言为eigen_assert(a_startRow <= xpr.rows() - blockRows)

我是LibIgl和Eigen的新手。有什么明显的我想念的东西吗?

0 个答案:

没有答案