/* * IEncoder.h * * Created on: 20 мар. 2019 г. * Author: krugliy */ #ifndef SOURCE_DRIVER_IENCODER_H_ #define SOURCE_DRIVER_IENCODER_H_ #include namespace driver { //!Интерфейс взаимодействия с энкодерами. struct IEncoder { typedef float Turn; typedef float Angle; typedef std::pair Position; //!Функция возращает номер оборота. virtual Turn getTurn() const = 0; //!Функция возращает угол в радианах от 0 до 2*pi или NaN. virtual Angle getAngle() const = 0; //!Метод позволяет получить консистентные данные позиции энкодера в формате (оборот, угол). virtual Position getPosition() const = 0; static std::pair delta( std::pair point_0, std::pair point_1 ); static Angle in_turn( std::pair point, Turn base ); static std::pair normalize( std::pair point ); }; } #endif /* SOURCE_DRIVER_IENCODER_H_ */