Program Listing for File sbg_utm.h

Return to documentation for file (include/sbg_driver/sbg_utm.h)

#ifndef SBG_UTM_H
#define SBG_UTM_H

// STL headers
#include <array>

namespace sbg
{

class Utm final
{
  public:

    //---------------------------------------------------------------------//
    //- Constructor                                                       -//
    //---------------------------------------------------------------------//

    Utm() = default;

    Utm(double latitude, double longitude);

    //---------------------------------------------------------------------//
    //- Parameters                                                        -//
    //---------------------------------------------------------------------//

    bool isInit() const;

    int getZoneNumber() const;

    double getMeridian() const;

    char getLetterDesignator() const;

    //---------------------------------------------------------------------//
    //- Operations                                                        -//
    //---------------------------------------------------------------------//

    void init(double latitude, double longitude);

    void clear();

    std::array<double, 2> computeEastingNorthing(double latitude, double longitude) const;

  private:

    static int computeZoneNumber(double latitude, double longitude);

    static char computeLetterDesignator(double latitude);

    double computeMeridian() const;

    bool      is_init_ = false;
    double    meridian_{};
    int       zone_number_{};
    char      letter_designator_{};
};

}

#endif // SBG_UTM_H