readOFF.cpp 715 B

123456789101112131415161718192021222324252627
  1. #include "readOFF.h"
  2. IGL_INLINE bool igl::readOFF (const std::string meshfile, Eigen::MatrixXd& V, Eigen::MatrixXi& F)
  3. {
  4. int vnum, fnum;
  5. FILE *fp = fopen (meshfile.c_str(), "r");
  6. if (!fp)
  7. {
  8. fprintf (stderr, "readOFF(): could not open file %s", meshfile.c_str());
  9. return false;
  10. }
  11. fscanf (fp, "OFF\n%d %d 0\n", &vnum, &fnum);
  12. V = Eigen::MatrixXd (vnum, 3);
  13. F = Eigen::MatrixXi (fnum, 3);
  14. for (unsigned i = 0; i < V.rows(); i++)
  15. fscanf (fp, "%lf %lf %lf\n", &V(i,0), &V(i,1), &V(i,2));
  16. for (unsigned i = 0; i < F.rows(); i++)
  17. fscanf (fp, "3 %d %d %d\n", &F(i,0), &F(i,1), &F(i,2));
  18. fclose (fp);
  19. return true;
  20. }