readOFF.h 955 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. //
  2. // IGL Lib - Simple C++ mesh library
  3. //
  4. // Copyright 2011, Daniele Panozzo. All rights reserved.
  5. #ifndef READOFF_H
  6. #define READOFF_H
  7. #include <Eigen/Core>
  8. #include <string>
  9. namespace igl
  10. {
  11. // read mesh from a ascii off file
  12. void readOFF (std::string meshfile, Eigen::MatrixXd& V, Eigen::MatrixXi& F)
  13. {
  14. int vnum, fnum;
  15. FILE *fp = fopen (meshfile.c_str(), "r");
  16. if (!fp)
  17. fprintf (stderr, "readOFF(): could not open file %s", meshfile.c_str());
  18. fscanf (fp, "OFF\n%d %d 0\n", &vnum, &fnum);
  19. V = Eigen::MatrixXd (vnum, 3);
  20. F = Eigen::MatrixXi (fnum, 3);
  21. for (unsigned i = 0; i < V.rows(); i++)
  22. fscanf (fp, "%lf %lf %lf\n", &V(i,0), &V(i,1), &V(i,2));
  23. for (unsigned i = 0; i < F.rows(); i++)
  24. fscanf (fp, "3 %d %d %d\n", &F(i,0), &F(i,1), &F(i,2));
  25. fclose (fp);
  26. }
  27. }
  28. #endif