#pragma once
//
//    FILE: AverageAngle.h
//  AUTHOR: Rob Tillaart
// VERSION: 0.1.7
// PURPOSE: class for averaging angles.
// HISTORY: See AverageAngle.cpp
//


#include "math.h"
#include "Arduino.h"

#define AVERAGE_ANGLE_LIB_VERSION             (F("0.1.7"))

#define GRAD_TO_RAD                           (PI / 200.0)
#define RAD_TO_GRAD                           (200.0 / PI)


class AverageAngle
{
public:
  enum AngleType { DEGREES = 0, RADIANS = 1, GRADIANS = 2 };

  AverageAngle(const enum AngleType type = DEGREES);

  uint32_t add(float alpha, float length = 1.0);
  void     reset();
  uint32_t count() { return _count; };
  float    getAverage();

  float    getTotalLength();
  float    getAverageLength();

  AngleType type() { return _type; };
  void      setType(AngleType type) { _type = type; };


private:
  AngleType _type;
  float     _sumx;
  float     _sumy;
  uint32_t  _count;
};


// -- END OF FILE --