// // Created by zx on 22-12-1. // #ifndef LIO_LIVOX_CPP_MPC_POSE2D_H_ #define LIO_LIVOX_CPP_MPC_POSE2D_H_ #include #include /* * 带direction的二维点,与x轴正方向逆时针为正方向 */ class Pose2d { public: Pose2d(); Pose2d(float x,float y,float theta); Pose2d(const Pose2d& point) { m_x=point.x(); m_y=point.y(); m_theta=point.theta(); } ~Pose2d(); Pose2d& operator=(const Pose2d& point) { m_x=point.x(); m_y=point.y(); m_theta=point.theta(); return *this; } Pose2d operator-(const Pose2d& pose)const { float x=m_x-pose.x(); float y=m_y-pose.y(); float theta=m_theta-pose.theta(); return Pose2d(x,y,theta); } Pose2d operator+(const Pose2d& pose)const { float x=m_x+pose.x(); float y=m_y+pose.y(); float theta=m_theta+pose.theta(); return Pose2d(x,y,theta); } static Pose2d abs(const Pose2d& pose) { Pose2d ret(std::abs(pose.x()),std::abs(pose.y()),std::abs(pose.theta())); return ret; } bool operator<(const Pose2d& pose)const { return x() m_x; std::atomic m_y; std::atomic m_theta; //梯度角,与x轴正方形逆时针为正,单位弧度 }; #endif //LIO_LIVOX_CPP_MPC_POSE2D_H_