Program Listing for File Mapper.h

Program Listing for File Mapper.h#

Return to documentation for file (src/main/cpp/lib/Mapper.h)

#ifndef MAPPER_H_
#define MAPPER_H_

class Mapper
{
private:
  std::pair<double, double> m_in;
  std::pair<double, double> m_out;
public:
  Mapper (const std::pair<double, double>& in,
      const std::pair<double, double>& out) :
      m_in
    { in }, m_out
    { out }
  {
  }

  double
  map (const double& out_val) const
  {
    return transform (m_in, m_out, out_val);
  }

  double
  inverse (const double& in_val) const
  {
    return transform (m_out, m_in, in_val);
  }
private:
  double
  transform (const std::pair<double, double>& in,
         const std::pair<double, double>& out, const double& val) const
  {
    return (out.second - out.first) / (in.second - in.first) * (val - in.first)
    + out.first;
  }
};

#endif /* MAPPER_H_ */