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