#pragma once#include"Shapeworks.h"#include<vtkSmartPointer.h>#include<vtkMatrix4x4.h>#include<vtkPolyData.h>#include<chrono>#include<random>namespaceshapeworks{classShapeworksUtils{usingtime_point=std::chrono::time_point<std::chrono::steady_clock>;public:statictime_pointnow(){returnstd::chrono::steady_clock::now();}staticdoubleelapsed(time_pointstart,time_pointend,boolprint_elapsed=true);staticunsignedrngSeed(){returnrngSeed_;}staticvoidsetRngSeed(constunsignedseed);staticunsignedgenerateNumber(){returnmt_();}// TODO: in C++17 this is a standard functionstaticboolis_directory(conststd::string&pathname);// TODO: in C++17 this is a standard functionstaticboolexists(conststd::string&filename);staticMatrix33getMatrix(constvtkSmartPointer<vtkMatrix4x4>&mat);staticVector3getOffset(constvtkSmartPointer<vtkMatrix4x4>&mat);private:staticunsignedrngSeed_;staticstd::mt19937mt_;};}// shapeworks