#pragma once #include "messagebasic.h" /// /// 依照指定名称路径机动 /// struct MESSAGEBASIC_EXPORT NavigateWithRoute : public AbstractMessage { QString _route_name; NavigateWithRoute(); // Serializable void recoveryFrom(const QJsonObject& obj) override; void saveTo(QJsonObject& obj) const override; }; /// /// 机动类型 /// enum MotionType { None, // 没有 StraightLine,// 直线机动 StandardArc, // 标准圆弧 ParabolaLine,// 抛物线 Bezier2tArc, // 二次贝塞尔曲线 Bezier3tArc, // 三次贝塞尔曲线 }; /// /// 机动角度方向 /// enum class MotionRotate { Horizontal, Vertical }; /// /// 正交机动命令抽象接口 /// struct OrthogonalMotionCommand : public Serializable { /// /// 机动平面方向 /// /// virtual MotionRotate rotateType() const = 0; /// /// 机动类型 /// /// virtual MotionType motionType() const = 0; /// /// 计算指定百分比位置 /// /// /// virtual LonLatAltPos posAtPercent(double percent) = 0; /// /// 指定百分比位置的速度 /// /// /// virtual double speedAtPercent(double percent) = 0; /// /// 指定百分比位置速度方向 /// /// /// virtual QVector2D speedVectorAtPercent(double percent) = 0; }; /// /// 平台机动命令 /// struct PlatformMotionCommand : public AbstractMessage { QHash> _motion_set; //合成机动命令 double _arrived_time = 0; // 抵达终点时间 double _start_time = 0; PlatformMotionCommand(); // Serializable void recoveryFrom(const QJsonObject& obj) override; void saveTo(QJsonObject& obj) const override; }; /// /// 查看指定目标实体的机动指令序列 /// struct MESSAGEBASIC_EXPORT MotionSequencePreviewGet : public AbstractMessage { MotionSequencePreviewGet(); }; /// /// 平台机动命令序列 /// struct MESSAGEBASIC_EXPORT PlatformMotionSequence : public AbstractMessage { QList> _cmd_sequence; PlatformMotionSequence(); // Serializable void recoveryFrom(const QJsonObject& obj) override; void saveTo(QJsonObject& obj) const override; }; // 正交机动命令实现 ======================================================= /// /// 水平直线机动 /// struct MESSAGEBASIC_EXPORT HorizontalLineMotionCmd : public OrthogonalMotionCommand { LonLatPos _lonlat_anchor;// 起始点 double _azimuth_deg = 0; // 起始方位角 double _speed_value = 0;// 起始速度 double _accerlate_rate = 0;// 加速度 HorizontalLineMotionCmd(); // Serializable void recoveryFrom(const QJsonObject& obj) override; void saveTo(QJsonObject& obj) const override; MotionRotate rotateType() const override; MotionType motionType() const override; LonLatAltPos posAtPercent(double percent) override; }; struct MESSAGEBASIC_EXPORT VerticalLineMotionCmd : public OrthogonalMotionCommand { };