🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
FieldOfView.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstUtil/Object.hpp"
25#include "AstUtil/ObjectNamed.hpp"
27
28AST_NAMESPACE_BEGIN
29
31enum class EFOVType
32{
34 eConical,
37 eSAR,
38 eCustom
39};
40
42class AST_CORE_API FieldOfView: public ObjectNamed
43{
44public:
46 FieldOfView() = default;
47
49 virtual ~FieldOfView() = default;
50
53 virtual EFOVType getFOVType() const = 0;
54
57 virtual void accept(FieldOfViewVisitor& visitor) = 0;
58
62 virtual double angularMargin(const Vector3d& direction) const = 0;
63
67 bool containsDirection(const Vector3d& direction) const {
68 return angularMargin(direction) > 0.0;
69 }
70
74 bool containsPoint(const Vector3d& targetPosInSensorFrame) const {
75 return angularMargin(targetPosInSensorFrame) > 0.0;
76 }
77
78protected:
79};
80
81AST_NAMESPACE_END
视场访问者接口
定义 FieldOfViewVisitor.hpp:41
视场基类
定义 FieldOfView.hpp:43
FieldOfView()=default
构造函数
bool containsDirection(const Vector3d &direction) const
便捷方法:方向是否在视场内
定义 FieldOfView.hpp:67
virtual ~FieldOfView()=default
析构函数
bool containsPoint(const Vector3d &targetPosInSensorFrame) const
便捷方法:目标点是否在视场内
定义 FieldOfView.hpp:74
virtual EFOVType getFOVType() const =0
获取视场类型
virtual void accept(FieldOfViewVisitor &visitor)=0
接受访问者
virtual double angularMargin(const Vector3d &direction) const =0
计算方向向量到 FOV 边界的角度余量(弧度)
命名对象
定义 ObjectNamed.hpp:36
EFOVType
视场类型枚举
定义 FieldOfView.hpp:32
@ eConical
复杂圆锥视场
@ eSimpleCone
简单圆锥视场
@ eCustom
自定义视场
@ eSAR
合成孔径雷达视场
@ eRectangular
矩形视场
@ eHalfPower
半功率视场