我正在尝试使用 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 深处某个地方的断言失败了。失败的断言在 Eigen 库中,在 Block.h 中尝试运行 Dynamic-size constructor 时inline Block()
。
对于它的价值,失败的断言是eigen_assert(a_startRow <= xpr.rows() - blockRows)
我是 LibIgl 和 Eigen 的新手。我有什么明显的遗漏吗?