2024-09-04 11:25:43 +08:00

119 lines
2.3 KiB
C++

/**
* GraphicDefines.h
*
* @brief: 自动驾驶绘图相关定义
* @author: zhanke
* @history: 2024-08-21, create file
*/
#ifndef GRAPHICDEFINES_H
#define GRAPHICDEFINES_H
#include <string>
#include <vector>
namespace graphic
{
struct AutoPoint
{
AutoPoint() = default;
AutoPoint(const AutoPoint& point)
{
this->x = point.x;
this->y = point.y;
this->yaw = point.yaw;
}
AutoPoint& operator=(const AutoPoint& point)
{
this->x = point.x;
this->y = point.y;
this->yaw = point.yaw;
return *this;
}
AutoPoint(double x, double y)
{
this->x = x;
this->y = y;
}
AutoPoint(double x, double y, double yaw)
{
this->x = x;
this->y = y;
this->yaw = yaw;
}
double x = 0.0;
double y = 0.0;
double yaw = 0.0;
};
using AutoPointList = std::vector<AutoPoint>;
struct AutoLine
{
AutoLine() = default;
AutoLine(AutoPoint p1, AutoPoint p2)
{
point1 = p1;
point2 = p2;
}
std::string tag;
std::string index;
AutoPoint point1;
AutoPoint point2;
};
struct AutoRect
{
AutoRect() = default;
AutoRect(AutoPoint p1, AutoPoint p2) { topLeft = p1, bottomRight = p2; }
bool contains(const AutoPoint& p)
{
return topLeft.x <= p.x && topLeft.y <= p.y && bottomRight.x >= p.x && bottomRight.y >= p.y;
}
AutoPoint topLeft;
AutoPoint bottomRight;
};
struct AutoPolygon
{
AutoPolygon() = default;
AutoPolygon(const AutoPolygon& polygon)
{
this->index = polygon.index;
this->tag1 = polygon.tag1;
this->tag2 = polygon.tag2;
this->tag3 = polygon.tag3;
this->pointList = polygon.pointList;
}
AutoPolygon& operator=(const AutoPolygon& polygon)
{
this->index = polygon.index;
this->tag1 = polygon.tag1;
this->tag2 = polygon.tag2;
this->tag3 = polygon.tag3;
this->pointList = polygon.pointList;
return *this;
}
void addPoint(double x, double y) { pointList.emplace_back(AutoPoint(x, y)); }
std::string index;
std::string tag1;
std::string tag2;
std::string tag3;
AutoPointList pointList;
};
} // namespace graphic
#endif // GRAPHICDEFINES_H