#include #include #include #include #include #include "JGeometry3D/JVector3D.hh" #include "JGeometry3D/JEigen3D.hh" #include "Jeep/JPrint.hh" #include "Jeep/JParser.hh" #include "Jeep/JMessage.hh" namespace { /** * Write vector to output stream. * * \param out output stream * \param vector vector * \return output stream */ inline std::ostream& operator<<(std::ostream& out, const JGEOMETRY3D::JVector3D& vector) { using namespace std; using namespace JPP; out << "(" << FIXED(7,3) << vector.getX() << ", " << FIXED(7,3) << vector.getY() << ", " << FIXED(7,3) << vector.getZ() << ")"; return out; } } /** * \file * * Example program to print eigen values in 3D. * \author mdejong */ int main(int argc, char **argv) { using namespace std; using namespace JPP; string inputFile; int debug; try { JParser<> zap("Example program to print eigen values in 3D."); zap['f'] = make_field(inputFile); zap['d'] = make_field(debug) = 1; zap(argc, argv); } catch(const exception& error) { FATAL(error.what() << endl); } cout.tie(&cerr); vector buffer; if (inputFile != "") { ifstream in(inputFile.c_str()); for (double x, y, z; in >> x >> y >> z; ) { buffer.push_back(JVector3D(x,y,z)); } in.close(); } const JEigenValues3D eigen(buffer.begin(), buffer.end()); for (JEigenValues3D::const_iterator i = eigen.begin(); i != eigen.end(); ++i) { cout << FIXED(7,3) << i->first << ' ' << i->second << endl; } }