diff --git a/build/msbuild/MPM-Geomechanics.vcxproj b/build/msbuild/MPM-Geomechanics.vcxproj
index 297ba28..e23dea9 100644
--- a/build/msbuild/MPM-Geomechanics.vcxproj
+++ b/build/msbuild/MPM-Geomechanics.vcxproj
@@ -105,7 +105,7 @@
Level3
true
- _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS
true
$(SolutionDir)../../inc
@@ -120,7 +120,7 @@
true
true
true
- NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions); _CRT_SECURE_NO_WARNINGS
true
$(SolutionDir)../../inc
true
@@ -164,6 +164,7 @@
+
@@ -178,6 +179,10 @@
true
true
+
+ true
+ true
+
@@ -201,6 +206,7 @@
+
diff --git a/build/msbuild/MPM-Geomechanics.vcxproj.filters b/build/msbuild/MPM-Geomechanics.vcxproj.filters
index 1f54844..c879136 100644
--- a/build/msbuild/MPM-Geomechanics.vcxproj.filters
+++ b/build/msbuild/MPM-Geomechanics.vcxproj.filters
@@ -40,6 +40,10 @@
tests
+
+
+ tests
+
@@ -77,6 +81,7 @@
+
diff --git a/build/msbuild/MPM-Geomechanics.vcxproj.user b/build/msbuild/MPM-Geomechanics.vcxproj.user
index 8052d4a..f428d85 100644
--- a/build/msbuild/MPM-Geomechanics.vcxproj.user
+++ b/build/msbuild/MPM-Geomechanics.vcxproj.user
@@ -1,8 +1,13 @@
- boussinesq-problem.json
- C:\Users\fabri\MPM\MPM-Geomechanics\tests\boussinesq problem
+ plane-slope-ASCII.stl
+ C:\Users\fabri\MPM\MPM-Geomechanics\tests\stl-mesh-reader\
+ WindowsLocalDebugger
+
+
+
+
WindowsLocalDebugger
\ No newline at end of file
diff --git a/inc/Mesh/Node.h b/inc/Mesh/Node.h
index 35f2af5..5b4b0e1 100644
--- a/inc/Mesh/Node.h
+++ b/inc/Mesh/Node.h
@@ -12,7 +12,7 @@
using Eigen::Vector3d;
/// \class Node
-/// \brief Represents a mesh node.
+/// \brief Represents a mesh node
class Node {
public:
diff --git a/inc/Mesh/STLReader.h b/inc/Mesh/STLReader.h
new file mode 100644
index 0000000..cfb06b9
--- /dev/null
+++ b/inc/Mesh/STLReader.h
@@ -0,0 +1,39 @@
+#ifndef STL_READER_H
+#define STL_READER_H
+
+#include
+using namespace Eigen;
+
+#include
+#include
+
+/// @brief Struct representing a triangle
+struct Triangle {
+ Vector3f normal;
+ Vector3f v1, v2, v3;
+};
+
+/// @brief Class to read STL files
+class STLReader {
+
+public:
+ /// @brief Read the STL file
+ bool read(const std::string& filename);
+
+ /// @brief Get the triangles of the STL mesh
+ /// @return Vector containing the triangles
+ const std::vector& getTriangles() const;
+
+private:
+
+ /// @brief Vector containing the triangles
+ std::vector triangles;
+
+ /// @brief Read the ASCII STL file
+ bool readASCII(std::ifstream& file);
+
+ /// @brief Read the binary STL file
+ bool readBinary(std::ifstream& file);
+};
+
+#endif
diff --git a/src/STLReader.cpp b/src/STLReader.cpp
new file mode 100644
index 0000000..e682e78
--- /dev/null
+++ b/src/STLReader.cpp
@@ -0,0 +1,90 @@
+#include "Mesh/STLReader.h"
+#include
+#include
+#include
+
+bool STLReader::read(const std::string& filename)
+{
+ // open the file
+ std::ifstream file(filename, std::ios::binary);
+ if (!file.is_open()) {
+ std::cerr << "Error opening STL file: " << filename << std::endl;
+ return false;
+ }
+
+ // read header to determine the format
+ char header[80];
+ file.read(header, 80);
+
+ // determine if it is ASCII or binary
+ std::string headerStr(header, 80);
+ if (headerStr.find("solid") == 0) {
+ file.close();
+ file.open(filename); // open it in text mode
+ return readASCII(file);
+ } else {
+ return readBinary(file);
+ }
+}
+
+bool STLReader::readASCII(std::ifstream& file)
+{
+ // clear triangles
+ triangles.clear();
+
+ std::string line;
+ while (std::getline(file, line))
+ {
+ std::istringstream ss(line);
+ std::string word;
+ ss >> word;
+
+ if (word == "facet")
+ {
+ Triangle triangle;
+ ss >> word >> triangle.normal.x() >> triangle.normal.y() >> triangle.normal.z();
+
+ // read vertex coordinates
+ std::getline(file, line); // outer loop
+ std::getline(file, line);
+ std::sscanf(line.c_str(), " vertex %f %f %f", &triangle.v1.x(), &triangle.v1.y(), &triangle.v1.z());
+
+ std::getline(file, line);
+ std::sscanf(line.c_str(), " vertex %f %f %f", &triangle.v2.x(), &triangle.v2.y(), &triangle.v2.z());
+
+ std::getline(file, line);
+ std::sscanf(line.c_str(), " vertex %f %f %f", &triangle.v3.x(), &triangle.v3.y(), &triangle.v3.z());
+
+ triangles.push_back(triangle);
+
+ std::getline(file, line); // end loop
+ std::getline(file, line); // end facet
+ }
+ }
+ return true;
+}
+
+bool STLReader::readBinary(std::ifstream& file) {
+
+ // clear triangles
+ triangles.clear();
+
+ uint32_t numTriangles;
+
+ file.read(reinterpret_cast(&numTriangles), sizeof(uint32_t));
+
+ for (uint32_t i = 0; i < numTriangles; ++i) {
+ Triangle triangle;
+ file.read(reinterpret_cast(&triangle.normal), sizeof(Vector2d));
+ file.read(reinterpret_cast(&triangle.v1), sizeof(Vector2d));
+ file.read(reinterpret_cast(&triangle.v2), sizeof(Vector2d));
+ file.read(reinterpret_cast(&triangle.v3), sizeof(Vector2d));
+ file.ignore(2); // Ignore attributes for now
+ triangles.push_back(triangle);
+ }
+ return true;
+}
+
+const std::vector& STLReader::getTriangles() const {
+ return triangles;
+}
\ No newline at end of file
diff --git a/tests/stl-mesh-reader/plane-slope-ASCII.stl b/tests/stl-mesh-reader/plane-slope-ASCII.stl
new file mode 100644
index 0000000..ae3446d
--- /dev/null
+++ b/tests/stl-mesh-reader/plane-slope-ASCII.stl
@@ -0,0 +1,1388 @@
+solid Created by Gmsh
+facet normal 0.707107 -2.41646e-16 0.707107
+ outer loop
+ vertex 3.17954241480685 3.250437217869697 6.82045758519315
+ vertex 3.969582167509996 3.415445991536189 6.030417832490004
+ vertex 3.6431698024793 4.169695949820518 6.356830197520701
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 2.345237724425496 0.8613357895616083 7.654762275574504
+ vertex 3.014950805023464 1.376319323293605 6.985049194976536
+ vertex 2.419859477917472 1.998690092818164 7.580140522082528
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.614095695227663 2.040696914961257 2.385904304772337
+ vertex 7.003999530869748 1.433017082643422 2.996000469130252
+ vertex 7.654474644719058 0.8604816887728108 2.345525355280942
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.003999530869748 1.433017082643422 2.996000469130252
+ vertex 6.469222017933878 1.921136177084002 3.530777982066122
+ vertex 6.394383597929608 0.8505270256839526 3.605616402070392
+ endloop
+endfacet
+facet normal 0.707107 1.47298e-17 0.707107
+ outer loop
+ vertex 2.345237724425496 0.8613357895616083 7.654762275574504
+ vertex 2.419859477917472 1.998690092818164 7.580140522082528
+ vertex 1.805260511923569 1.558981863375247 8.194739488076431
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.195055796920238 1.557270930560543 1.804944203079762
+ vertex 7.614095695227663 2.040696914961257 2.385904304772337
+ vertex 7.654474644719058 0.8604816887728108 2.345525355280942
+ endloop
+endfacet
+facet normal 0.707107 4.76171e-16 0.707107
+ outer loop
+ vertex 2.999999999996958 4.183503421363176 7.000000000003041
+ vertex 3.17954241480685 3.250437217869697 6.82045758519315
+ vertex 3.6431698024793 4.169695949820518 6.356830197520701
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.652129100876608 2.992836725497768 2.347870899123392
+ vertex 8.23073076685316 3.378932402639875 1.76926923314684
+ vertex 7.665327845975324 4.081800869933908 2.334672154024676
+ endloop
+endfacet
+facet normal 0.707107 -1.83222e-16 0.707107
+ outer loop
+ vertex 3.660080065314131 2.672880977695362 6.339919934685869
+ vertex 3.969582167509996 3.415445991536189 6.030417832490004
+ vertex 3.17954241480685 3.250437217869697 6.82045758519315
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.982971189971538 2.55170895426492 3.017028810028462
+ vertex 6.469222017933878 1.921136177084002 3.530777982066122
+ vertex 7.003999530869748 1.433017082643422 2.996000469130252
+ endloop
+endfacet
+facet normal 0.707107 -3.0598e-16 0.707107
+ outer loop
+ vertex 3.014950805023464 1.376319323293605 6.985049194976536
+ vertex 3.6209681122334 0.8362480141311495 6.379031887766599
+ vertex 3.558108194265185 1.739002676975781 6.441891805734815
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.982971189971538 2.55170895426492 3.017028810028462
+ vertex 7.003999530869748 1.433017082643422 2.996000469130252
+ vertex 7.614095695227663 2.040696914961257 2.385904304772337
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.469222017933878 1.921136177084002 3.530777982066122
+ vertex 5.827763123493424 1.520656192867491 4.172236876506576
+ vertex 6.394383597929608 0.8505270256839526 3.605616402070392
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.665327845975324 4.081800869933908 2.334672154024676
+ vertex 7.175285793923991 3.46802669034169 2.824714206076009
+ vertex 7.652129100876608 2.992836725497768 2.347870899123392
+ endloop
+endfacet
+facet normal 0.707107 -4.14346e-16 0.707107
+ outer loop
+ vertex 3.014950805023464 1.376319323293605 6.985049194976536
+ vertex 2.999999999996958 0.612924324867664 7.000000000003041
+ vertex 3.6209681122334 0.8362480141311495 6.379031887766599
+ endloop
+endfacet
+facet normal 0.707107 -3.421e-16 0.707107
+ outer loop
+ vertex 2.419859477917472 1.998690092818164 7.580140522082528
+ vertex 2.513924504462671 2.893919355712134 7.48607549553733
+ vertex 1.833180368892304 2.514118127178895 8.166819631107696
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.394383597929608 0.8505270256839526 3.605616402070392
+ vertex 6.999999999997728 0.6116587536763402 3.000000000002272
+ vertex 7.003999530869748 1.433017082643422 2.996000469130252
+ endloop
+endfacet
+facet normal 0.707107 7.81e-16 0.707107
+ outer loop
+ vertex 1.833180368892304 2.514118127178895 8.166819631107696
+ vertex 1.950350062674173 3.44190542926404 8.049649937325826
+ vertex 1.307641270232362 2.963857780695148 8.692358729767637
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.258684411671629 1.139135007385294 4.741315588328371
+ vertex 4.788507315126777 0.7252314223390504 5.211492684873223
+ vertex 5.333333333329803 0 4.666666666670197
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.333333333329803 0 4.666666666670197
+ vertex 5.812144713101357 0.729684401482652 4.187855286898643
+ vertex 5.258684411671629 1.139135007385294 4.741315588328371
+ endloop
+endfacet
+facet normal 0.707107 8.02317e-16 0.707107
+ outer loop
+ vertex 2.513924504462671 2.893919355712134 7.48607549553733
+ vertex 1.950350062674173 3.44190542926404 8.049649937325826
+ vertex 1.833180368892304 2.514118127178895 8.166819631107696
+ endloop
+endfacet
+facet normal 0.707107 3.17863e-16 0.707107
+ outer loop
+ vertex 3.014950805023464 1.376319323293605 6.985049194976536
+ vertex 3.056381342065753 2.331638068411144 6.943618657934246
+ vertex 2.419859477917472 1.998690092818164 7.580140522082528
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.313570198421498 2.990088107345365 4.686429801578502
+ vertex 4.700759289437417 3.431563214801328 5.299240710562583
+ vertex 4.747387157006503 2.608526827661147 5.252612842993497
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.625600586659242 1.584738000229431 5.374399413340758
+ vertex 4.012288226063736 1.389629150048312 5.987711773936264
+ vertex 4.333333333329073 0.8164965822636734 5.666666666670927
+ endloop
+endfacet
+facet normal 0.707107 -1.78351e-16 0.707107
+ outer loop
+ vertex 1.950350062674173 3.44190542926404 8.049649937325826
+ vertex 1.336735346651392 3.67036564617144 8.663264653348607
+ vertex 1.307641270232362 2.963857780695148 8.692358729767637
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.665327845975324 4.081800869933908 2.334672154024676
+ vertex 8.23073076685316 3.378932402639875 1.76926923314684
+ vertex 8.345613086587457 4.210800767573327 1.654386913412543
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.469222017933878 1.921136177084002 3.530777982066122
+ vertex 5.910262576606506 2.457972090428311 4.089737423393494
+ vertex 5.827763123493424 1.520656192867491 4.172236876506576
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.313570198421498 2.990088107345365 4.686429801578502
+ vertex 5.33333333740841 3.693572379549584 4.66666666259159
+ vertex 4.700759289437417 3.431563214801328 5.299240710562583
+ endloop
+endfacet
+facet normal 0.707107 3.5721e-16 0.707107
+ outer loop
+ vertex 1.805260511923569 1.558981863375247 8.194739488076431
+ vertex 1.666666666665569 0.7205403697071584 8.333333333334432
+ vertex 2.345237724425496 0.8613357895616083 7.654762275574504
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.654474644719058 0.8604816887728108 2.345525355280942
+ vertex 8.333333333332073 0.7195638967554779 1.666666666667927
+ vertex 8.195055796920238 1.557270930560543 1.804944203079762
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.333333333329073 0.8164965822636734 5.666666666670927
+ vertex 4.788507315126777 0.7252314223390504 5.211492684873223
+ vertex 4.625600586659242 1.584738000229431 5.374399413340758
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 9.310159810261192 3.518466410752481 0.689840189738808
+ vertex 8.787443041654466 3.000000004462747 1.212556958345534
+ vertex 9.393840478427906 2.5089562590334 0.6061595215720939
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 10 2.999999999996966 0
+ vertex 9.310159810261192 3.518466410752481 0.689840189738808
+ vertex 9.393840478427906 2.5089562590334 0.6061595215720939
+ endloop
+endfacet
+facet normal 0.707107 -1.39341e-16 0.707107
+ outer loop
+ vertex 0.6054064591463948 2.5080760059971 9.394593540853606
+ vertex 1.307641270232362 2.963857780695148 8.692358729767637
+ vertex 0.6885052802113936 3.514735828268524 9.311494719788607
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.787443041654466 3.000000004462747 1.212556958345534
+ vertex 8.789365278350621 2.058205772315775 1.210634721649379
+ vertex 9.393840478427906 2.5089562590334 0.6061595215720939
+ endloop
+endfacet
+facet normal 0.707107 3.40825e-16 0.707107
+ outer loop
+ vertex 3.014950805023464 1.376319323293605 6.985049194976536
+ vertex 3.558108194265185 1.739002676975781 6.441891805734815
+ vertex 3.056381342065753 2.331638068411144 6.943618657934246
+ endloop
+endfacet
+facet normal 0.707107 1.96764e-16 0.707107
+ outer loop
+ vertex 0.6054064591463948 2.5080760059971 9.394593540853606
+ vertex 1.221020696670413 2.05540549483303 8.778979303329587
+ vertex 1.307641270232362 2.963857780695148 8.692358729767637
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.787443041654466 3.000000004462747 1.212556958345534
+ vertex 8.19865419530306 2.505981479088712 1.80134580469694
+ vertex 8.789365278350621 2.058205772315775 1.210634721649379
+ endloop
+endfacet
+facet normal 0.707107 -4.3734e-16 0.707107
+ outer loop
+ vertex 3.056381342065753 2.331638068411144 6.943618657934246
+ vertex 2.513924504462671 2.893919355712134 7.48607549553733
+ vertex 2.419859477917472 1.998690092818164 7.580140522082528
+ endloop
+endfacet
+facet normal 0.707107 4.56083e-16 0.707107
+ outer loop
+ vertex 1.221020696670413 2.05540549483303 8.778979303329587
+ vertex 1.833180368892304 2.514118127178895 8.166819631107696
+ vertex 1.307641270232362 2.963857780695148 8.692358729767637
+ endloop
+endfacet
+facet normal 0.707107 6.03588e-17 0.707107
+ outer loop
+ vertex 0.6054064591463948 2.5080760059971 9.394593540853606
+ vertex 0.6885052802113936 3.514735828268524 9.311494719788607
+ vertex 0 2.999999999996966 10
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 10 3.999999999998489 0
+ vertex 9.310159810261192 3.518466410752481 0.689840189738808
+ vertex 10 2.999999999996966 0
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.910262576606506 2.457972090428311 4.089737423393494
+ vertex 5.312126389703704 2.081963583052617 4.687873610296296
+ vertex 5.827763123493424 1.520656192867491 4.172236876506576
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 10 2.999999999996966 0
+ vertex 9.393840478427906 2.5089562590334 0.6061595215720939
+ vertex 10 1.999999999995513 0
+ endloop
+endfacet
+facet normal 0.707107 -0 0.707107
+ outer loop
+ vertex 0 1.999999999995513 10
+ vertex 0.6054064591463948 2.5080760059971 9.394593540853606
+ vertex 0 2.999999999996966 10
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.19865419530306 2.505981479088712 1.80134580469694
+ vertex 8.195055796920238 1.557270930560543 1.804944203079762
+ vertex 8.789365278350621 2.058205772315775 1.210634721649379
+ endloop
+endfacet
+facet normal 0.707107 -3.43181e-16 0.707107
+ outer loop
+ vertex 1.221020696670413 2.05540549483303 8.778979303329587
+ vertex 1.805260511923569 1.558981863375247 8.194739488076431
+ vertex 1.833180368892304 2.514118127178895 8.166819631107696
+ endloop
+endfacet
+facet normal 0.707107 -3.244e-16 0.707107
+ outer loop
+ vertex 1.805260511923569 1.558981863375247 8.194739488076431
+ vertex 2.419859477917472 1.998690092818164 7.580140522082528
+ vertex 1.833180368892304 2.514118127178895 8.166819631107696
+ endloop
+endfacet
+facet normal 0.707107 -0 0.707107
+ outer loop
+ vertex 0 2.999999999996966 10
+ vertex 0.6885052802113936 3.514735828268524 9.311494719788607
+ vertex 0 3.999999999998489 10
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.19865419530306 2.505981479088712 1.80134580469694
+ vertex 7.614095695227663 2.040696914961257 2.385904304772337
+ vertex 8.195055796920238 1.557270930560543 1.804944203079762
+ endloop
+endfacet
+facet normal 0.707107 6.49278e-17 0.707107
+ outer loop
+ vertex 3.558108194265185 1.739002676975781 6.441891805734815
+ vertex 3.660080065314131 2.672880977695362 6.339919934685869
+ vertex 3.056381342065753 2.331638068411144 6.943618657934246
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.652129100876608 2.992836725497768 2.347870899123392
+ vertex 6.982971189971538 2.55170895426492 3.017028810028462
+ vertex 7.614095695227663 2.040696914961257 2.385904304772337
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.910262576606506 2.457972090428311 4.089737423393494
+ vertex 5.944469216806485 3.385222363297727 4.055530783193515
+ vertex 5.313570198421498 2.990088107345365 4.686429801578502
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.789365278350621 2.058205772315775 1.210634721649379
+ vertex 9.345385224252105 1.524519739102515 0.6546147757478948
+ vertex 9.393840478427906 2.5089562590334 0.6061595215720939
+ endloop
+endfacet
+facet normal 0.707107 -2.65342e-16 0.707107
+ outer loop
+ vertex 0.6054064591463948 2.5080760059971 9.394593540853606
+ vertex 0.655925305716812 1.524754173558891 9.344074694283188
+ vertex 1.221020696670413 2.05540549483303 8.778979303329587
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.19865419530306 2.505981479088712 1.80134580469694
+ vertex 7.652129100876608 2.992836725497768 2.347870899123392
+ vertex 7.614095695227663 2.040696914961257 2.385904304772337
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.910262576606506 2.457972090428311 4.089737423393494
+ vertex 5.313570198421498 2.990088107345365 4.686429801578502
+ vertex 5.312126389703704 2.081963583052617 4.687873610296296
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.312126389703704 2.081963583052617 4.687873610296296
+ vertex 5.258684411671629 1.139135007385294 4.741315588328371
+ vertex 5.827763123493424 1.520656192867491 4.172236876506576
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 3.558108194265185 1.739002676975781 6.441891805734815
+ vertex 4.159878050084821 2.114617768613089 5.840121949915179
+ vertex 3.660080065314131 2.672880977695362 6.339919934685869
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.313570198421498 2.990088107345365 4.686429801578502
+ vertex 4.747387157006503 2.608526827661147 5.252612842993497
+ vertex 5.312126389703704 2.081963583052617 4.687873610296296
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.666666666662628 5 5.333333333337372
+ vertex 5.002810445950678 4.231377842648399 4.997189554049322
+ vertex 5.333333333329803 5 4.666666666670197
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.333981874431548 4.198024834665579 5.666018125568452
+ vertex 5.002810445950678 4.231377842648399 4.997189554049322
+ vertex 4.666666666662628 5 5.333333333337372
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 3.333333333329807 5 6.666666666670194
+ vertex 3.6431698024793 4.169695949820518 6.356830197520701
+ vertex 3.99999999999552 5 6.00000000000448
+ endloop
+endfacet
+facet normal 0.707107 -3.70481e-16 0.707107
+ outer loop
+ vertex 2.999999999996958 4.183503421363176 7.000000000003041
+ vertex 3.6431698024793 4.169695949820518 6.356830197520701
+ vertex 3.333333333329807 5 6.666666666670194
+ endloop
+endfacet
+facet normal 0.707107 -1.12728e-16 0.707107
+ outer loop
+ vertex 1.999999999998416 5 8.000000000001585
+ vertex 2.333721956863214 4.216544328889176 7.666278043136787
+ vertex 2.66666666666411 5 7.33333333333589
+ endloop
+endfacet
+facet normal 0.707107 2.16333e-16 0.707107
+ outer loop
+ vertex 4.666666666662628 0 5.333333333337372
+ vertex 4.333333333329073 0.8164965822636734 5.666666666670927
+ vertex 3.99999999999552 0 6.00000000000448
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.666666666664148 0 3.333333333335852
+ vertex 6.394383597929608 0.8505270256839526 3.605616402070392
+ vertex 5.999999999996977 0 4.000000000003023
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.999999999998489 0 2.000000000001511
+ vertex 7.654474644719058 0.8604816887728108 2.345525355280942
+ vertex 7.333333333331318 0 2.666666666668682
+ endloop
+endfacet
+facet normal 0.707107 4.44322e-16 0.707107
+ outer loop
+ vertex 2.66666666666411 0 7.33333333333589
+ vertex 2.345237724425496 0.8613357895616083 7.654762275574504
+ vertex 1.999999999998416 0 8.000000000001585
+ endloop
+endfacet
+facet normal 0.707107 -2.24469e-16 0.707107
+ outer loop
+ vertex 1.663938546592214 4.216975440663273 8.336061453407787
+ vertex 2.333721956863214 4.216544328889176 7.666278043136787
+ vertex 1.999999999998416 5 8.000000000001585
+ endloop
+endfacet
+facet normal 0.707107 -3.86632e-16 0.707107
+ outer loop
+ vertex 2.66666666666411 5 7.33333333333589
+ vertex 2.333721956863214 4.216544328889176 7.666278043136787
+ vertex 2.999999999996958 4.183503421363176 7.000000000003041
+ endloop
+endfacet
+facet normal 0.707107 -1.91568e-16 0.707107
+ outer loop
+ vertex 3.99999999999552 5 6.00000000000448
+ vertex 3.6431698024793 4.169695949820518 6.356830197520701
+ vertex 4.333981874431548 4.198024834665579 5.666018125568452
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.333333333329803 5 4.666666666670197
+ vertex 5.002810445950678 4.231377842648399 4.997189554049322
+ vertex 5.660930836677283 4.211674832248354 4.339069163322717
+ endloop
+endfacet
+facet normal 0.707107 -1.83542e-16 0.707107
+ outer loop
+ vertex 3.99999999999552 5 6.00000000000448
+ vertex 4.333981874431548 4.198024834665579 5.666018125568452
+ vertex 4.666666666662628 5 5.333333333337372
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.333333333329803 5 4.666666666670197
+ vertex 5.660930836677283 4.211674832248354 4.339069163322717
+ vertex 5.999999999996977 5 4.000000000003023
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.666666666664148 5 3.333333333335852
+ vertex 6.983802498864017 4.200228433109455 3.016197501135983
+ vertex 7.333333333331318 5 2.666666666668682
+ endloop
+endfacet
+facet normal 0.707107 -7.51936e-17 0.707107
+ outer loop
+ vertex 1.333333333332722 5 8.666666666667279
+ vertex 1.663938546592214 4.216975440663273 8.336061453407787
+ vertex 1.999999999998416 5 8.000000000001585
+ endloop
+endfacet
+facet normal 0.707107 -7.93222e-16 0.707107
+ outer loop
+ vertex 2.66666666666411 5 7.33333333333589
+ vertex 2.999999999996958 4.183503421363176 7.000000000003041
+ vertex 3.333333333329807 5 6.666666666670194
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.999999999998489 5 2.000000000001511
+ vertex 8.345613086587457 4.210800767573327 1.654386913412543
+ vertex 8.666666666665659 5 1.333333333334341
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.666666666664148 5 3.333333333335852
+ vertex 6.327467180290567 4.19713549719763 3.672532819709433
+ vertex 6.983802498864017 4.200228433109455 3.016197501135983
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.999999999998489 5 2.000000000001511
+ vertex 7.665327845975324 4.081800869933908 2.334672154024676
+ vertex 8.345613086587457 4.210800767573327 1.654386913412543
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.660930836677283 4.211674832248354 4.339069163322717
+ vertex 6.327467180290567 4.19713549719763 3.672532819709433
+ vertex 5.999999999996977 5 4.000000000003023
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.983802498864017 4.200228433109455 3.016197501135983
+ vertex 7.665327845975324 4.081800869933908 2.334672154024676
+ vertex 7.333333333331318 5 2.666666666668682
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.999999999996977 5 4.000000000003023
+ vertex 6.327467180290567 4.19713549719763 3.672532819709433
+ vertex 6.666666666664148 5 3.333333333335852
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.333333333331318 5 2.666666666668682
+ vertex 7.665327845975324 4.081800869933908 2.334672154024676
+ vertex 7.999999999998489 5 2.000000000001511
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.327467180290567 4.19713549719763 3.672532819709433
+ vertex 6.625098673174437 3.420298591456494 3.374901326825563
+ vertex 6.983802498864017 4.200228433109455 3.016197501135983
+ endloop
+endfacet
+facet normal 0.707107 5.67203e-16 0.707107
+ outer loop
+ vertex 4.333333333329073 0.8164965822636734 5.666666666670927
+ vertex 3.6209681122334 0.8362480141311495 6.379031887766599
+ vertex 3.99999999999552 0 6.00000000000448
+ endloop
+endfacet
+facet normal 0.707107 7.74487e-16 0.707107
+ outer loop
+ vertex 3.99999999999552 0 6.00000000000448
+ vertex 3.6209681122334 0.8362480141311495 6.379031887766599
+ vertex 3.333333333329807 0 6.666666666670194
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.159878050084821 2.114617768613089 5.840121949915179
+ vertex 4.625600586659242 1.584738000229431 5.374399413340758
+ vertex 4.747387157006503 2.608526827661147 5.252612842993497
+ endloop
+endfacet
+facet normal 0.707107 1.27414e-15 0.707107
+ outer loop
+ vertex 0.655925305716812 1.524754173558891 9.344074694283188
+ vertex 1.331699046560815 1.341595744540588 8.668300953439186
+ vertex 1.221020696670413 2.05540549483303 8.778979303329587
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 9.333333333332831 0 0.6666666666671688
+ vertex 8.961486775018846 0.7327559079779757 1.038513224981154
+ vertex 8.666666666665659 0 1.333333333334341
+ endloop
+endfacet
+facet normal 0.707107 7.63031e-16 0.707107
+ outer loop
+ vertex 1.333333333332722 0 8.666666666667279
+ vertex 1.038683263596864 0.7330569595462605 8.961316736403136
+ vertex 0.666666666666379 0 9.333333333333622
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.789365278350621 2.058205772315775 1.210634721649379
+ vertex 8.733094975703644 1.359081906860595 1.266905024296356
+ vertex 9.345385224252105 1.524519739102515 0.6546147757478948
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.327467180290567 4.19713549719763 3.672532819709433
+ vertex 5.944469216806485 3.385222363297727 4.055530783193515
+ vertex 6.625098673174437 3.420298591456494 3.374901326825563
+ endloop
+endfacet
+facet normal 0.707107 -3.89751e-16 0.707107
+ outer loop
+ vertex 2.345237724425496 0.8613357895616083 7.654762275574504
+ vertex 2.999999999996958 0.612924324867664 7.000000000003041
+ vertex 3.014950805023464 1.376319323293605 6.985049194976536
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.660930836677283 4.211674832248354 4.339069163322717
+ vertex 5.944469216806485 3.385222363297727 4.055530783193515
+ vertex 6.327467180290567 4.19713549719763 3.672532819709433
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.159878050084821 2.114617768613089 5.840121949915179
+ vertex 4.012288226063736 1.389629150048312 5.987711773936264
+ vertex 4.625600586659242 1.584738000229431 5.374399413340758
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.003999530869748 1.433017082643422 2.996000469130252
+ vertex 6.999999999997728 0.6116587536763402 3.000000000002272
+ vertex 7.654474644719058 0.8604816887728108 2.345525355280942
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 10 1.999999999995513 0
+ vertex 9.345385224252105 1.524519739102515 0.6546147757478948
+ vertex 10 0.9999999999984134 0
+ endloop
+endfacet
+facet normal 0.707107 -0 0.707107
+ outer loop
+ vertex 0 0.9999999999984134 10
+ vertex 0.655925305716812 1.524754173558891 9.344074694283188
+ vertex 0 1.999999999995513 10
+ endloop
+endfacet
+facet normal 0.707107 -1.021e-15 0.707107
+ outer loop
+ vertex 1.663938546592214 4.216975440663273 8.336061453407787
+ vertex 1.950350062674173 3.44190542926404 8.049649937325826
+ vertex 2.333721956863214 4.216544328889176 7.666278043136787
+ endloop
+endfacet
+facet normal 0.707107 -1.10363e-16 0.707107
+ outer loop
+ vertex 0.666666666666379 5 9.333333333333622
+ vertex 1.019897867081073 4.199749959558579 8.980102132918928
+ vertex 1.333333333332722 5 8.666666666667279
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.666666666665659 5 1.333333333334341
+ vertex 8.949177837489561 4.260556475592649 1.050822162510439
+ vertex 9.333333333332831 5 0.6666666666671688
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.982971189971538 2.55170895426492 3.017028810028462
+ vertex 7.175285793923991 3.46802669034169 2.824714206076009
+ vertex 6.625098673174437 3.420298591456494 3.374901326825563
+ endloop
+endfacet
+facet normal 0.707107 -8.44312e-16 0.707107
+ outer loop
+ vertex 1.038683263596864 0.7330569595462605 8.961316736403136
+ vertex 1.331699046560815 1.341595744540588 8.668300953439186
+ vertex 0.655925305716812 1.524754173558891 9.344074694283188
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 9.345385224252105 1.524519739102515 0.6546147757478948
+ vertex 8.733094975703644 1.359081906860595 1.266905024296356
+ vertex 8.961486775018846 0.7327559079779757 1.038513224981154
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.747387157006503 2.608526827661147 5.252612842993497
+ vertex 4.625600586659242 1.584738000229431 5.374399413340758
+ vertex 5.312126389703704 2.081963583052617 4.687873610296296
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 9.393840478427906 2.5089562590334 0.6061595215720939
+ vertex 9.345385224252105 1.524519739102515 0.6546147757478948
+ vertex 10 1.999999999995513 0
+ endloop
+endfacet
+facet normal 0.707107 -3.79264e-16 0.707107
+ outer loop
+ vertex 0 1.999999999995513 10
+ vertex 0.655925305716812 1.524754173558891 9.344074694283188
+ vertex 0.6054064591463948 2.5080760059971 9.394593540853606
+ endloop
+endfacet
+facet normal 0.707107 -7.26049e-16 0.707107
+ outer loop
+ vertex 3.056381342065753 2.331638068411144 6.943618657934246
+ vertex 3.17954241480685 3.250437217869697 6.82045758519315
+ vertex 2.513924504462671 2.893919355712134 7.48607549553733
+ endloop
+endfacet
+facet normal 0.707107 -6.1254e-16 0.707107
+ outer loop
+ vertex 3.660080065314131 2.672880977695362 6.339919934685869
+ vertex 3.17954241480685 3.250437217869697 6.82045758519315
+ vertex 3.056381342065753 2.331638068411144 6.943618657934246
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 1.333333333332722 5 8.666666666667279
+ vertex 1.019897867081073 4.199749959558579 8.980102132918928
+ vertex 1.663938546592214 4.216975440663273 8.336061453407787
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.787443041654466 3.000000004462747 1.212556958345534
+ vertex 8.23073076685316 3.378932402639875 1.76926923314684
+ vertex 8.19865419530306 2.505981479088712 1.80134580469694
+ endloop
+endfacet
+facet normal 0.707107 4.76123e-16 0.707107
+ outer loop
+ vertex 2.345237724425496 0.8613357895616083 7.654762275574504
+ vertex 1.666666666665569 0.7205403697071584 8.333333333334432
+ vertex 1.999999999998416 0 8.000000000001585
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.999999999998489 0 2.000000000001511
+ vertex 8.333333333332073 0.7195638967554779 1.666666666667927
+ vertex 7.654474644719058 0.8604816887728108 2.345525355280942
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.345613086587457 4.210800767573327 1.654386913412543
+ vertex 8.949177837489561 4.260556475592649 1.050822162510439
+ vertex 8.666666666665659 5 1.333333333334341
+ endloop
+endfacet
+facet normal 0.707107 -7.63858e-16 0.707107
+ outer loop
+ vertex 1.950350062674173 3.44190542926404 8.049649937325826
+ vertex 2.598535645437257 3.612290402162882 7.401464354562743
+ vertex 2.333721956863214 4.216544328889176 7.666278043136787
+ endloop
+endfacet
+facet normal 0.707107 -2.86741e-16 0.707107
+ outer loop
+ vertex 1.307641270232362 2.963857780695148 8.692358729767637
+ vertex 1.336735346651392 3.67036564617144 8.663264653348607
+ vertex 0.6885052802113936 3.514735828268524 9.311494719788607
+ endloop
+endfacet
+facet normal 0.707107 4.51265e-16 0.707107
+ outer loop
+ vertex 1.333333333332722 0 8.666666666667279
+ vertex 1.666666666665569 0.7205403697071584 8.333333333334432
+ vertex 1.038683263596864 0.7330569595462605 8.961316736403136
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.961486775018846 0.7327559079779757 1.038513224981154
+ vertex 8.333333333332073 0.7195638967554779 1.666666666667927
+ vertex 8.666666666665659 0 1.333333333334341
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 9.310159810261192 3.518466410752481 0.689840189738808
+ vertex 8.662830687491685 3.670365994765796 1.337169312508315
+ vertex 8.787443041654466 3.000000004462747 1.212556958345534
+ endloop
+endfacet
+facet normal 0.707107 -2.22061e-16 0.707107
+ outer loop
+ vertex 3.6431698024793 4.169695949820518 6.356830197520701
+ vertex 3.969582167509996 3.415445991536189 6.030417832490004
+ vertex 4.333981874431548 4.198024834665579 5.666018125568452
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.827763123493424 1.520656192867491 4.172236876506576
+ vertex 5.812144713101357 0.729684401482652 4.187855286898643
+ vertex 6.394383597929608 0.8505270256839526 3.605616402070392
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.652129100876608 2.992836725497768 2.347870899123392
+ vertex 7.175285793923991 3.46802669034169 2.824714206076009
+ vertex 6.982971189971538 2.55170895426492 3.017028810028462
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 10 5 0
+ vertex 9.496664967999989 4.294501282714015 0.5033350320000114
+ vertex 10 3.999999999998489 0
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.625600586659242 1.584738000229431 5.374399413340758
+ vertex 4.788507315126777 0.7252314223390504 5.211492684873223
+ vertex 5.258684411671629 1.139135007385294 4.741315588328371
+ endloop
+endfacet
+facet normal 0.707107 -0 0.707107
+ outer loop
+ vertex 0 3.999999999998489 10
+ vertex 0.5035942995203347 4.292691608002805 9.496405700479665
+ vertex 0 5 10
+ endloop
+endfacet
+facet normal 0.707107 6.28363e-16 0.707107
+ outer loop
+ vertex 2.66666666666411 0 7.33333333333589
+ vertex 2.999999999996958 0.612924324867664 7.000000000003041
+ vertex 2.345237724425496 0.8613357895616083 7.654762275574504
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 9.333333333332831 5 0.6666666666671688
+ vertex 9.496664967999989 4.294501282714015 0.5033350320000114
+ vertex 10 5 0
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.666666666664148 0 3.333333333335852
+ vertex 6.999999999997728 0.6116587536763402 3.000000000002272
+ vertex 6.394383597929608 0.8505270256839526 3.605616402070392
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.654474644719058 0.8604816887728108 2.345525355280942
+ vertex 6.999999999997728 0.6116587536763402 3.000000000002272
+ vertex 7.333333333331318 0 2.666666666668682
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.944469216806485 3.385222363297727 4.055530783193515
+ vertex 5.33333333740841 3.693572379549584 4.66666666259159
+ vertex 5.313570198421498 2.990088107345365 4.686429801578502
+ endloop
+endfacet
+facet normal 0.707107 5.32822e-16 0.707107
+ outer loop
+ vertex 2.513924504462671 2.893919355712134 7.48607549553733
+ vertex 2.598535645437257 3.612290402162882 7.401464354562743
+ vertex 1.950350062674173 3.44190542926404 8.049649937325826
+ endloop
+endfacet
+facet normal 0.707107 8.62598e-16 0.707107
+ outer loop
+ vertex 3.6209681122334 0.8362480141311495 6.379031887766599
+ vertex 2.999999999996958 0.612924324867664 7.000000000003041
+ vertex 3.333333333329807 0 6.666666666670194
+ endloop
+endfacet
+facet normal 0.707107 -9.98916e-16 0.707107
+ outer loop
+ vertex 0 5 10
+ vertex 0.5035942995203347 4.292691608002805 9.496405700479665
+ vertex 0.666666666666379 5 9.333333333333622
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.983802498864017 4.200228433109455 3.016197501135983
+ vertex 7.175285793923991 3.46802669034169 2.824714206076009
+ vertex 7.665327845975324 4.081800869933908 2.334672154024676
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.312126389703704 2.081963583052617 4.687873610296296
+ vertex 4.625600586659242 1.584738000229431 5.374399413340758
+ vertex 5.258684411671629 1.139135007385294 4.741315588328371
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.333333333329803 0 4.666666666670197
+ vertex 4.788507315126777 0.7252314223390504 5.211492684873223
+ vertex 4.666666666662628 0 5.333333333337372
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 3.969582167509996 3.415445991536189 6.030417832490004
+ vertex 4.700759289437417 3.431563214801328 5.299240710562583
+ vertex 4.333981874431548 4.198024834665579 5.666018125568452
+ endloop
+endfacet
+facet normal 0.707107 -5.50071e-16 0.707107
+ outer loop
+ vertex 0.6885052802113936 3.514735828268524 9.311494719788607
+ vertex 1.336735346651392 3.67036564617144 8.663264653348607
+ vertex 1.019897867081073 4.199749959558579 8.980102132918928
+ endloop
+endfacet
+facet normal 0.707107 -0 0.707107
+ outer loop
+ vertex 0 0 10
+ vertex 0.4929350509013704 0.6927588952608303 9.507064949098631
+ vertex 0 0.9999999999984134 10
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 10 0.9999999999984134 0
+ vertex 9.507120445916588 0.6927103976466764 0.4928795540834123
+ vertex 10 0 0
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.982971189971538 2.55170895426492 3.017028810028462
+ vertex 6.426550326581888 2.682688368913055 3.573449673418112
+ vertex 6.469222017933878 1.921136177084002 3.530777982066122
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.949177837489561 4.260556475592649 1.050822162510439
+ vertex 8.662830687491685 3.670365994765796 1.337169312508315
+ vertex 9.310159810261192 3.518466410752481 0.689840189738808
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.660930836677283 4.211674832248354 4.339069163322717
+ vertex 5.33333333740841 3.693572379549584 4.66666666259159
+ vertex 5.944469216806485 3.385222363297727 4.055530783193515
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.625098673174437 3.420298591456494 3.374901326825563
+ vertex 6.426550326581888 2.682688368913055 3.573449673418112
+ vertex 6.982971189971538 2.55170895426492 3.017028810028462
+ endloop
+endfacet
+facet normal 0.707107 -4.03709e-16 0.707107
+ outer loop
+ vertex 0.666666666666379 0 9.333333333333622
+ vertex 0.4929350509013704 0.6927588952608303 9.507064949098631
+ vertex 0 0 10
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 10 0 0
+ vertex 9.507120445916588 0.6927103976466764 0.4928795540834123
+ vertex 9.333333333332831 0 0.6666666666671688
+ endloop
+endfacet
+facet normal 0.707107 3.26857e-16 0.707107
+ outer loop
+ vertex 1.999999999998416 0 8.000000000001585
+ vertex 1.666666666665569 0.7205403697071584 8.333333333334432
+ vertex 1.333333333332722 0 8.666666666667279
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.666666666665659 0 1.333333333334341
+ vertex 8.333333333332073 0.7195638967554779 1.666666666667927
+ vertex 7.999999999998489 0 2.000000000001511
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.394383597929608 0.8505270256839526 3.605616402070392
+ vertex 5.812144713101357 0.729684401482652 4.187855286898643
+ vertex 5.999999999996977 0 4.000000000003023
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.999999999996977 0 4.000000000003023
+ vertex 5.812144713101357 0.729684401482652 4.187855286898643
+ vertex 5.333333333329803 0 4.666666666670197
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.944469216806485 3.385222363297727 4.055530783193515
+ vertex 6.426550326581888 2.682688368913055 3.573449673418112
+ vertex 6.625098673174437 3.420298591456494 3.374901326825563
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.333981874431548 4.198024834665579 5.666018125568452
+ vertex 4.700759289437417 3.431563214801328 5.299240710562583
+ vertex 5.002810445950678 4.231377842648399 4.997189554049322
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.19865419530306 2.505981479088712 1.80134580469694
+ vertex 8.23073076685316 3.378932402639875 1.76926923314684
+ vertex 7.652129100876608 2.992836725497768 2.347870899123392
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.910262576606506 2.457972090428311 4.089737423393494
+ vertex 6.426550326581888 2.682688368913055 3.573449673418112
+ vertex 5.944469216806485 3.385222363297727 4.055530783193515
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.258684411671629 1.139135007385294 4.741315588328371
+ vertex 5.812144713101357 0.729684401482652 4.187855286898643
+ vertex 5.827763123493424 1.520656192867491 4.172236876506576
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 3.969582167509996 3.415445991536189 6.030417832490004
+ vertex 4.259907862341634 2.798772370660187 5.740092137658366
+ vertex 4.700759289437417 3.431563214801328 5.299240710562583
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.747387157006503 2.608526827661147 5.252612842993497
+ vertex 4.259907862341634 2.798772370660187 5.740092137658366
+ vertex 4.159878050084821 2.114617768613089 5.840121949915179
+ endloop
+endfacet
+facet normal 0.707107 6.37547e-16 0.707107
+ outer loop
+ vertex 2.999999999996958 4.183503421363176 7.000000000003041
+ vertex 2.598535645437257 3.612290402162882 7.401464354562743
+ vertex 3.17954241480685 3.250437217869697 6.82045758519315
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 9.345385224252105 1.524519739102515 0.6546147757478948
+ vertex 9.507120445916588 0.6927103976466764 0.4928795540834123
+ vertex 10 0.9999999999984134 0
+ endloop
+endfacet
+facet normal 0.707107 6.82357e-16 0.707107
+ outer loop
+ vertex 0 0.9999999999984134 10
+ vertex 0.4929350509013704 0.6927588952608303 9.507064949098631
+ vertex 0.655925305716812 1.524754173558891 9.344074694283188
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.700759289437417 3.431563214801328 5.299240710562583
+ vertex 5.33333333740841 3.693572379549584 4.66666666259159
+ vertex 5.002810445950678 4.231377842648399 4.997189554049322
+ endloop
+endfacet
+facet normal 0.707107 -1.17232e-15 0.707107
+ outer loop
+ vertex 1.663938546592214 4.216975440663273 8.336061453407787
+ vertex 1.336735346651392 3.67036564617144 8.663264653348607
+ vertex 1.950350062674173 3.44190542926404 8.049649937325826
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.159878050084821 2.114617768613089 5.840121949915179
+ vertex 4.259907862341634 2.798772370660187 5.740092137658366
+ vertex 3.660080065314131 2.672880977695362 6.339919934685869
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.469222017933878 1.921136177084002 3.530777982066122
+ vertex 6.426550326581888 2.682688368913055 3.573449673418112
+ vertex 5.910262576606506 2.457972090428311 4.089737423393494
+ endloop
+endfacet
+facet normal 0.707107 1.00865e-15 0.707107
+ outer loop
+ vertex 3.333333333329807 0 6.666666666670194
+ vertex 2.999999999996958 0.612924324867664 7.000000000003041
+ vertex 2.66666666666411 0 7.33333333333589
+ endloop
+endfacet
+facet normal 0.707107 1.14439e-15 0.707107
+ outer loop
+ vertex 0.6885052802113936 3.514735828268524 9.311494719788607
+ vertex 0.5035942995203347 4.292691608002805 9.496405700479665
+ vertex 0 3.999999999998489 10
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 7.333333333331318 0 2.666666666668682
+ vertex 6.999999999997728 0.6116587536763402 3.000000000002272
+ vertex 6.666666666664148 0 3.333333333335852
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.961486775018846 0.7327559079779757 1.038513224981154
+ vertex 9.507120445916588 0.6927103976466764 0.4928795540834123
+ vertex 9.345385224252105 1.524519739102515 0.6546147757478948
+ endloop
+endfacet
+facet normal 0.707107 2.96042e-16 0.707107
+ outer loop
+ vertex 0.655925305716812 1.524754173558891 9.344074694283188
+ vertex 0.4929350509013704 0.6927588952608303 9.507064949098631
+ vertex 1.038683263596864 0.7330569595462605 8.961316736403136
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 10 3.999999999998489 0
+ vertex 9.496664967999989 4.294501282714015 0.5033350320000114
+ vertex 9.310159810261192 3.518466410752481 0.689840189738808
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 6.625098673174437 3.420298591456494 3.374901326825563
+ vertex 7.175285793923991 3.46802669034169 2.824714206076009
+ vertex 6.983802498864017 4.200228433109455 3.016197501135983
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 3.660080065314131 2.672880977695362 6.339919934685869
+ vertex 4.259907862341634 2.798772370660187 5.740092137658366
+ vertex 3.969582167509996 3.415445991536189 6.030417832490004
+ endloop
+endfacet
+facet normal 0.707107 -2.44144e-16 0.707107
+ outer loop
+ vertex 4.333333333329073 0.8164965822636734 5.666666666670927
+ vertex 4.012288226063736 1.389629150048312 5.987711773936264
+ vertex 3.6209681122334 0.8362480141311495 6.379031887766599
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.787443041654466 3.000000004462747 1.212556958345534
+ vertex 8.662830687491685 3.670365994765796 1.337169312508315
+ vertex 8.23073076685316 3.378932402639875 1.76926923314684
+ endloop
+endfacet
+facet normal 0.707107 -3.66677e-16 0.707107
+ outer loop
+ vertex 3.6209681122334 0.8362480141311495 6.379031887766599
+ vertex 4.012288226063736 1.389629150048312 5.987711773936264
+ vertex 3.558108194265185 1.739002676975781 6.441891805734815
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.700759289437417 3.431563214801328 5.299240710562583
+ vertex 4.259907862341634 2.798772370660187 5.740092137658366
+ vertex 4.747387157006503 2.608526827661147 5.252612842993497
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 3.558108194265185 1.739002676975781 6.441891805734815
+ vertex 4.012288226063736 1.389629150048312 5.987711773936264
+ vertex 4.159878050084821 2.114617768613089 5.840121949915179
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.961486775018846 0.7327559079779757 1.038513224981154
+ vertex 8.733094975703644 1.359081906860595 1.266905024296356
+ vertex 8.333333333332073 0.7195638967554779 1.666666666667927
+ endloop
+endfacet
+facet normal 0.707107 -1.06824e-15 0.707107
+ outer loop
+ vertex 1.666666666665569 0.7205403697071584 8.333333333334432
+ vertex 1.331699046560815 1.341595744540588 8.668300953439186
+ vertex 1.038683263596864 0.7330569595462605 8.961316736403136
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 4.666666666662628 0 5.333333333337372
+ vertex 4.788507315126777 0.7252314223390504 5.211492684873223
+ vertex 4.333333333329073 0.8164965822636734 5.666666666670927
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.949177837489561 4.260556475592649 1.050822162510439
+ vertex 9.496664967999989 4.294501282714015 0.5033350320000114
+ vertex 9.333333333332831 5 0.6666666666671688
+ endloop
+endfacet
+facet normal 0.707107 -8.77223e-16 0.707107
+ outer loop
+ vertex 0.666666666666379 5 9.333333333333622
+ vertex 0.5035942995203347 4.292691608002805 9.496405700479665
+ vertex 1.019897867081073 4.199749959558579 8.980102132918928
+ endloop
+endfacet
+facet normal 0.707107 1.46345e-15 0.707107
+ outer loop
+ vertex 1.221020696670413 2.05540549483303 8.778979303329587
+ vertex 1.331699046560815 1.341595744540588 8.668300953439186
+ vertex 1.805260511923569 1.558981863375247 8.194739488076431
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.195055796920238 1.557270930560543 1.804944203079762
+ vertex 8.733094975703644 1.359081906860595 1.266905024296356
+ vertex 8.789365278350621 2.058205772315775 1.210634721649379
+ endloop
+endfacet
+facet normal 0.707107 -1.49494e-16 0.707107
+ outer loop
+ vertex 2.333721956863214 4.216544328889176 7.666278043136787
+ vertex 2.598535645437257 3.612290402162882 7.401464354562743
+ vertex 2.999999999996958 4.183503421363176 7.000000000003041
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 9.333333333332831 0 0.6666666666671688
+ vertex 9.507120445916588 0.6927103976466764 0.4928795540834123
+ vertex 8.961486775018846 0.7327559079779757 1.038513224981154
+ endloop
+endfacet
+facet normal 0.707107 1.01935e-16 0.707107
+ outer loop
+ vertex 1.038683263596864 0.7330569595462605 8.961316736403136
+ vertex 0.4929350509013704 0.6927588952608303 9.507064949098631
+ vertex 0.666666666666379 0 9.333333333333622
+ endloop
+endfacet
+facet normal 0.707107 4.38088e-16 0.707107
+ outer loop
+ vertex 3.17954241480685 3.250437217869697 6.82045758519315
+ vertex 2.598535645437257 3.612290402162882 7.401464354562743
+ vertex 2.513924504462671 2.893919355712134 7.48607549553733
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 5.002810445950678 4.231377842648399 4.997189554049322
+ vertex 5.33333333740841 3.693572379549584 4.66666666259159
+ vertex 5.660930836677283 4.211674832248354 4.339069163322717
+ endloop
+endfacet
+facet normal 0.707107 8.16745e-16 0.707107
+ outer loop
+ vertex 1.019897867081073 4.199749959558579 8.980102132918928
+ vertex 0.5035942995203347 4.292691608002805 9.496405700479665
+ vertex 0.6885052802113936 3.514735828268524 9.311494719788607
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 9.310159810261192 3.518466410752481 0.689840189738808
+ vertex 9.496664967999989 4.294501282714015 0.5033350320000114
+ vertex 8.949177837489561 4.260556475592649 1.050822162510439
+ endloop
+endfacet
+facet normal 0.707107 -1.47308e-15 0.707107
+ outer loop
+ vertex 1.019897867081073 4.199749959558579 8.980102132918928
+ vertex 1.336735346651392 3.67036564617144 8.663264653348607
+ vertex 1.663938546592214 4.216975440663273 8.336061453407787
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.345613086587457 4.210800767573327 1.654386913412543
+ vertex 8.662830687491685 3.670365994765796 1.337169312508315
+ vertex 8.949177837489561 4.260556475592649 1.050822162510439
+ endloop
+endfacet
+facet normal 0.707107 1.06976e-16 0.707107
+ outer loop
+ vertex 1.805260511923569 1.558981863375247 8.194739488076431
+ vertex 1.331699046560815 1.341595744540588 8.668300953439186
+ vertex 1.666666666665569 0.7205403697071584 8.333333333334432
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.333333333332073 0.7195638967554779 1.666666666667927
+ vertex 8.733094975703644 1.359081906860595 1.266905024296356
+ vertex 8.195055796920238 1.557270930560543 1.804944203079762
+ endloop
+endfacet
+facet normal 0.707107 0 0.707107
+ outer loop
+ vertex 8.23073076685316 3.378932402639875 1.76926923314684
+ vertex 8.662830687491685 3.670365994765796 1.337169312508315
+ vertex 8.345613086587457 4.210800767573327 1.654386913412543
+ endloop
+endfacet
+endsolid Created by Gmsh
diff --git a/tests/stl-mesh-reader/plane-slope-Binary.stl b/tests/stl-mesh-reader/plane-slope-Binary.stl
new file mode 100644
index 0000000..db1ecc7
Binary files /dev/null and b/tests/stl-mesh-reader/plane-slope-Binary.stl differ
diff --git a/tests/stl-mesh-reader/plane-slope.geo b/tests/stl-mesh-reader/plane-slope.geo
new file mode 100644
index 0000000..c35aa68
--- /dev/null
+++ b/tests/stl-mesh-reader/plane-slope.geo
@@ -0,0 +1,18 @@
+
+// Define the mesh size
+mesh_size = 1.0;
+
+// Define the geometrical parameters
+h=10;
+b=5;
+l=10;
+
+// Define the points
+Point(1) = {0, 0, h, mesh_size};
+Point(2) = {l, 0, 0, mesh_size};
+//+
+Line(1) = {1, 2};
+//+
+Extrude {0, b, 0} {
+ Curve{1};
+}
diff --git a/tests/stl-mesh-reader/stl-mesh-reader-test.cpp b/tests/stl-mesh-reader/stl-mesh-reader-test.cpp
new file mode 100644
index 0000000..c1a4a6b
--- /dev/null
+++ b/tests/stl-mesh-reader/stl-mesh-reader-test.cpp
@@ -0,0 +1,34 @@
+#include "Mesh/STLReader.h"
+#include
+
+void print_stl_mesh_info(STLReader reader)
+{
+ // print the number of triangles
+ const auto& triangles = reader.getTriangles();
+ std::cout << "Number of triangles: " << triangles.size() << std::endl;
+
+ // print the vertexes of the triangles
+ for (const auto& tri : triangles) {
+ std::cout << "Vertex 1: (" << tri.v1.x() << ", " << tri.v1.y() << ", " << tri.v1.z() << ")" << std::endl;
+ std::cout << "Vertex 2: (" << tri.v2.x() << ", " << tri.v2.y() << ", " << tri.v2.z() << ")" << std::endl;
+ std::cout << "Vertex 3: (" << tri.v3.x() << ", " << tri.v3.y() << ", " << tri.v3.z() << ")" << std::endl;
+ }
+}
+
+int main(int argc, char* argv[])
+{
+ std::string filename = argv[1];
+
+ std::cout <<"Filename:" << filename << std::endl;
+
+ STLReader reader;
+
+ if (!reader.read(filename)) {
+ std::cerr << "Error reading mesh ..." << std::endl;
+ return -1;
+ }
+
+ print_stl_mesh_info(reader);
+
+ return 0;
+}
\ No newline at end of file