Extensibility of TrackPoint

We want to store different data in the TrackPoint depending on the recognition/tracking method used, e.g.:

  • height
  • quality
  • color
  • marker ID
  • ...

After discussion:

  • Create structs for each marker/tracker type, storing the individual data
  • Create a struct TrackPoint which consists of the two main fields, storing the pixel point and the quality. Additionally save the possible results for each marker/tracker type as an std::optional.
classDiagram
    MultiColor--*TrackPoint
    Casern--*TrackPoint
    Code--*TrackPoint
    Japan--*TrackPoint
    Hermes--*TrackPoint
    Stereo--*TrackPoint

    class TrackPoint{
        +Vec2F mPixelPoint
        +int mQuality
        +std::optional~MultiColor~ mMultiColor
        +std::optional~Casern~ mCasern
        +std::optional~Marker~ mCode
        +std::optional~Japan~ mJapan
        +std::optional~Hermes~ mHermes
        +std::optional~Stereo~ mStereo
    }

    class MultiColor{
        +Vec2F mColorPoint
        +QColor mColor
    }

    class Casern{
        +Vec2F mColorPoint
        +QColor mColor
        +cv::Vec3d mOrientation
    }

    class Code{
        +int mMarkerID
        +cv::Vec3d mOrientation
    }

    class Japan{
        +cv::Vec3d mOrientation
    }

    class Hermes{
    }

    class Stereo{
       +Vec3F mStereoPoint
    }
Edited by Schrödter, Tobias