setting default export precision to 17 for all exporters
authorChris Russ <christoph.russ@roames.com.au>
Wed, 6 Jul 2016 04:49:14 +0000 (14:49 +1000)
committerChris Russ <christoph.russ@roames.com.au>
Wed, 6 Jul 2016 04:49:14 +0000 (14:49 +1000)
code/ColladaExporter.cpp
code/ObjExporter.cpp
code/PlyExporter.cpp
code/STLExporter.cpp
code/StepExporter.cpp
code/XFileExporter.cpp

index 6a6dc67..789259d 100644 (file)
@@ -94,6 +94,7 @@ ColladaExporter::ColladaExporter( const aiScene* pScene, IOSystem* pIOSystem, co
 {
     // make sure that all formatting happens using the standard, C locale and not the user's current locale
     mOutput.imbue( std::locale("C") );
+    mOutput.precision(17);
 
     mScene = pScene;
     mSceneOwned = false;
@@ -1061,9 +1062,9 @@ void ColladaExporter::WriteNode( const aiScene* pScene, aiNode* pNode)
     }
 
     const std::string node_name_escaped = XMLEscape(pNode->mName.data);
-    mOutput << startstr 
-            << "<node id=\"" << node_name_escaped 
-            << "\" name=\"" << node_name_escaped 
+    mOutput << startstr
+            << "<node id=\"" << node_name_escaped
+            << "\" name=\"" << node_name_escaped
             << "\" type=\"" << node_type
             << "\">" << endstr;
     PushTag();
index 4f9fb3e..24b2720 100644 (file)
@@ -94,7 +94,9 @@ ObjExporter :: ObjExporter(const char* _filename, const aiScene* pScene)
     // make sure that all formatting happens using the standard, C locale and not the user's current locale
     const std::locale& l = std::locale("C");
     mOutput.imbue(l);
+    mOutput.precision(17);
     mOutputMat.imbue(l);
+    mOutputMat.precision(17);
 
     WriteGeometryFile();
     WriteMaterialFile();
index b882521..7c57183 100644 (file)
@@ -99,6 +99,7 @@ PlyExporter::PlyExporter(const char* _filename, const aiScene* pScene, bool bina
     // make sure that all formatting happens using the standard, C locale and not the user's current locale
     const std::locale& l = std::locale("C");
     mOutput.imbue(l);
+    mOutput.precision(17);
 
     unsigned int faces = 0u, vertices = 0u, components = 0u;
     for (unsigned int i = 0; i < pScene->mNumMeshes; ++i) {
index a5c5484..9ea5494 100644 (file)
@@ -94,6 +94,7 @@ STLExporter :: STLExporter(const char* _filename, const aiScene* pScene, bool bi
     // make sure that all formatting happens using the standard, C locale and not the user's current locale
     const std::locale& l = std::locale("C");
     mOutput.imbue(l);
+    mOutput.precision(17);
     if (binary) {
         char buf[80] = {0} ;
         buf[0] = 'A'; buf[1] = 's'; buf[2] = 's'; buf[3] = 'i'; buf[4] = 'm'; buf[5] = 'p';
index cc0a80a..759f67b 100644 (file)
@@ -146,6 +146,7 @@ StepExporter::StepExporter(const aiScene* pScene, IOSystem* pIOSystem, const std
 
     // make sure that all formatting happens using the standard, C locale and not the user's current locale
     mOutput.imbue( std::locale("C") );
+    mOutput.precision(17);
 
     // start writing
     WriteFile();
@@ -158,7 +159,9 @@ void StepExporter::WriteFile()
     // see http://shodhganga.inflibnet.ac.in:8080/jspui/bitstream/10603/14116/11/11_chapter%203.pdf
     // note, that all realnumber values must be comma separated in x files
     mOutput.setf(std::ios::fixed);
-    mOutput.precision(16); // precission for double
+    // precission for double
+    // see http://stackoverflow.com/questions/554063/how-do-i-print-a-double-value-with-full-precision-using-cout
+    mOutput.precision(17);
 
     // standard color
     aiColor4D fColor;
@@ -365,4 +368,3 @@ void StepExporter::WriteFile()
 
 #endif
 #endif
-
index e865f23..de6a8fe 100644 (file)
@@ -104,6 +104,7 @@ XFileExporter::XFileExporter(const aiScene* pScene, IOSystem* pIOSystem, const s
 {
     // make sure that all formatting happens using the standard, C locale and not the user's current locale
     mOutput.imbue( std::locale("C") );
+    mOutput.precision(17);
 
     // start writing
     WriteFile();
@@ -124,7 +125,7 @@ void XFileExporter::WriteFile()
 {
     // note, that all realnumber values must be comma separated in x files
     mOutput.setf(std::ios::fixed);
-    mOutput.precision(16); // precission for double
+    mOutput.precision(17); // precission for double
 
     // entry of writing the file
     WriteHeader();
@@ -529,4 +530,3 @@ void XFileExporter::writePath(aiString path)
 
 #endif
 #endif
-