我在我正在从事的几何项目中使用 libigl。我需要使用一个函数来投射光线并给我交叉点。我发现ray_mesh_intersect
问题是我在任何地方都找不到这个函数的例子,即使是在文档上!
我目前试图给函数一个空的输入向量,但它似乎不起作用。
#include <iostream>
#include <igl/readSTL.h>
#include <igl/opengl/glfw/Viewer.h>
#include <igl/ray_mesh_intersect.h>
#include <Eigen/src/Core/Matrix.h>
#include <Eigen/src/Core/MatrixBase.h>
#define ARGV_COUNT 2
Eigen::MatrixXd Vs, Ns;
Eigen::MatrixXi Fs;
int main(int argc, char *argv[])
{
if (argc != ARGV_COUNT)
{
std::cout << "Useage: ./example <path_to_stl>" << std::endl;
return 1;
}
const std::string filePath = std::string(argv[1]);
// load a mesh
std::ifstream fileStream (filePath);
igl::readSTL(fileStream, Vs, Fs, Ns);
std::string dir,_1,_2,name;
igl::read_triangle_mesh(filePath ,Vs ,Fs,dir,_1,_2,name);
std::cout << "DIR:" << dir << std::endl;
std::cout << "_1:" << _1 << std::endl;
std::cout << "_2:" << _2 << std::endl;
std::cout << "name:" << name << std::endl;
Eigen::MatrixXd source;
Eigen::MatrixXd dirEigen;
igl::Hit hitted;
igl::ray_mesh_intersect(source, dirEigen, Vs, Fs, hitted);
// Plot the mesh
igl::opengl::glfw::Viewer viewer;
viewer.data().set_mesh(Vs, Fs);
viewer.data().set_face_based(true);
viewer.launch();
}
当前程序崩溃。但是编译。