Переглянути джерело

writeOFF for quads etc. (#2283) [ci skip]

Alec Jacobson 2 роки тому
батько
коміт
e139702373
2 змінених файлів з 34 додано та 2 видалено
  1. 2 2
      include/igl/writeOFF.cpp
  2. 32 0
      tests/include/igl/writeOFF.cpp

+ 2 - 2
include/igl/writeOFF.cpp

@@ -29,7 +29,7 @@ IGL_INLINE bool igl::writeOFF(
   s<<
     "OFF\n"<<V.rows()<<" "<<F.rows()<<" 0\n"<<
     V.format(IOFormat(FullPrecision,DontAlignCols," ","\n","","","","\n"))<<
-    (F.array()).format(IOFormat(FullPrecision,DontAlignCols," ","\n","3 ","","","\n"));
+    (F.array()).format(IOFormat(FullPrecision,DontAlignCols," ","\n",std::to_string(F.cols()) + " ","","","\n"));
   return true;
 }
 
@@ -72,7 +72,7 @@ IGL_INLINE bool igl::writeOFF(
     s << unsigned(RGB_Array(i,0)) << " " << unsigned(RGB_Array(i,1)) << " " << unsigned(RGB_Array(i,2)) << " 255\n";
   }
 
-  s<<(F.array()).format(IOFormat(FullPrecision,DontAlignCols," ","\n","3 ","","","\n"));
+  s<<(F.array()).format(IOFormat(FullPrecision,DontAlignCols," ","\n",std::to_string(F.cols()) + " ","","","\n"));
   return true;
 }
 

+ 32 - 0
tests/include/igl/writeOFF.cpp

@@ -0,0 +1,32 @@
+#include <test_common.h>
+#include <igl/readOFF.h>
+#include <igl/writeOFF.h>
+
+TEST_CASE("writeOFF: quads", "[igl]")
+{
+  // Cube
+  Eigen::MatrixXd V(8,3);
+  V <<
+    0,0,0,
+    1,0,0,
+    1,1,0,
+    0,1,0,
+    0,0,1,
+    1,0,1,
+    1,1,1,
+    0,1,1;
+  Eigen::MatrixXi Q(6,4);
+  Q <<
+    0,1,2,3,
+    1,5,6,2,
+    5,4,7,6,
+    4,0,3,7,
+    3,2,6,7,
+    1,0,4,5;
+  igl::writeOFF("cube.off",V,Q);
+  Eigen::MatrixXd rV;
+  Eigen::MatrixXi rQ;
+  igl::readOFF("cube.off",rV,rQ);
+  test_common::assert_eq(V,rV);
+  test_common::assert_eq(Q,rQ);
+}