Helios++
Helios software for LiDAR simulations
DirectTrajectoryWriteStrategy.h
1 #pragma once
2 
3 #include <filems/write/strategies/WriteStrategy.h>
4 #include <scanner/Trajectory.h>
5 
6 #include <fstream>
7 #include <sstream>
8 
9 namespace helios { namespace filems{
10 
20  public WriteStrategy<Trajectory const &>
21 {
22 protected:
23  // *** ATTRIBUTES *** //
24  // ******************** //
28  std::ofstream &ofs;
29 
30 public:
31  // *** CONSTRUCTION / DESTRUCTION *** //
32  // ************************************ //
37  DirectTrajectoryWriteStrategy(std::ofstream &ofs) : ofs(ofs) {}
38  virtual ~DirectTrajectoryWriteStrategy() = default;
39 
40  // *** WRITE STRATEGY INTERFACE *** //
41  // ********************************* //
47  void write(Trajectory const &t) override {
48  ofs << trajectoryToString(t);
49  }
50 
51 protected:
52  // *** UTILS *** //
53  // *************** //
58  virtual std::string trajectoryToString(Trajectory const &t){
59  std::stringstream ss;
60  ss << std::setprecision(4) << std::fixed;
61  ss << t.position.x << " "
62  << t.position.y << " "
63  << t.position.z << " "
64  << std::setprecision(9) << std::fixed
65  << t.gpsTime / 1000000000.0 << " "
66  << std::setprecision(4) << std::fixed
69  << MathConverter::radiansToDegrees(t.yaw) << std::endl;
70  return ss.str();
71  }
72 };
73 
74  }}
static double radiansToDegrees(double const radians)
Receive radians, return degrees.
Definition: MathConverter.h:12
Class representing a concrete trajectory definition.
Definition: Trajectory.h:10
double pitch
Pitch angle in radians.
Definition: Trajectory.h:30
double gpsTime
GPS time in nanoseconds identifying the moment at which trajectory is registered.
Definition: Trajectory.h:18
double roll
Roll angle in radians.
Definition: Trajectory.h:26
glm::dvec3 position
Trajectory position/coordinates.
Definition: Trajectory.h:22
double yaw
Yaw angle in radians.
Definition: Trajectory.h:34
Concrete class specializing WriteStrategy to directly write trajectory to a file.
Definition: DirectTrajectoryWriteStrategy.h:21
virtual std::string trajectoryToString(Trajectory const &t)
Build a string from trajectory data.
Definition: DirectTrajectoryWriteStrategy.h:58
void write(Trajectory const &t) override
Write trajectory to file.
Definition: DirectTrajectoryWriteStrategy.h:47
std::ofstream & ofs
The output file stream to do the writing.
Definition: DirectTrajectoryWriteStrategy.h:28
DirectTrajectoryWriteStrategy(std::ofstream &ofs)
Default constructor for direct trajectory write strategy.
Definition: DirectTrajectoryWriteStrategy.h:37
Interface that must be implemented by any class which supports write implementations for file writers...
Definition: WriteStrategy.h:14