You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

252 lines
8.7 KiB
C

2 years ago
#pragma once
#include "Resource.h"
#include "deque"
#include <string>
using namespace std;
//<2F><>֪<EFBFBD><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<E3BEAD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>ʣ<EFBFBD><CAA3>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>
double CalSlopeBetweenTwoPoint(const double fromPtLon, const double fromPtLat, const float fromPtAlt, const double endPtLon, const double endPtLat, const float endPtAlt);
//<2F><>֪<EFBFBD><D6AA><EFBFBD><EFBFBD>A<EFBFBD>γ<E3BEAD>ȸߣ<C8B8><DFA3>Լ<EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>B<EFBFBD><42><EFBFBD>ĸ߶<C4B8>
double CalAltFromSlope(const double fromPtLon, const double fromPtLat, const float fromPtAlt, const double endPtLon, const double endPtLat,const double slope);
/*-------------------------------------------------------------------------------------------------------------
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------------------------------*/
//<2F>̺߳<DFB3><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void ThreadFuncLightRegion();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и߶ȣ<DFB6><C8A3><EFBFBD><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool AnalysisLightRegion(int iAngle, int iRadius);
/*-------------------------------------------------------------------------------------------------------------
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱͨ<EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------------------------------*/
//<2F>̺߳<DFB3><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱͨ<CAB1>Ӽ<EFBFBD><D3BC><EFBFBD>
void ThreadFuncRealTimeDetection();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>߶ȣ<DFB6><C8A3>ǶȺ;<C8BA><CDBE>Χ<EBB7B6><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
bool AnalysisVisiArea(double uavAlt, double dAngle, double dDistanceMin, double dDistanceMax, double lonGCS, double latGCS);
/*-------------------------------------------------------------------------------------------------------------
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱ<EFBFBD><EFBFBD>ײ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------------------------------*/
//<2F>̺߳<DFB3><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱ<CAB5><CAB1>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD>
void ThreadFuncRealTimeCrash();
/*-------------------------------------------------------------------------------------------------------------
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ӷ<EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------------------------------*/
//<2F>̺߳<DFB3><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
void ThreadFuncAnalysisRoute();
//<2F><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ľ<EFBFBD><C4BE>ȡ<EFBFBD>γ<EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>վ<EFBFBD><D5BE>ͨ<EFBFBD>Ӹ߶<D3B8>
float CalculateVisibleAlt(const double& lon, const double& lat);
/*-------------------------------------------------------------------------------------------------------------
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ӷ<EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------------------------------*/
//<2F>̺߳<DFB3><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
void ThreadFuncAnalysisLOS();
/*-------------------------------------------------------------------------------------------------------------
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ӵȸ<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------------------------------*/
//<2F>̺߳<DFB3><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ӵȸ<D3B5><C8B8>߷<EFBFBD><DFB7><EFBFBD>
void ThreadFuncAnalysisContour();
//ͨ<>ӵȸ<D3B5><C8B8>߷<EFBFBD><DFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ͼ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ȸ<EFBFBD><C8B8>ߣ<EFBFBD>iAngle <20>Ƕ<EFBFBD>
bool AnalysisContourLine(int iAngle);
//<2F><><EFBFBD>ӵ㵽ͨ<E3B5BD>ӵȸ<D3B5><C8B8><EFBFBD>ͼ<EFBFBD><CDBC>
void InsertPtToContourLine(float _fLightAlt, double _dPtLon, double _dPtLat);
// CDlgLightRegion <20>Ի<EFBFBD><D4BB><EFBFBD>
class CDlgLightRegion : public CBCGPDialog
{
DECLARE_DYNAMIC(CDlgLightRegion)
public:
CDlgLightRegion(CWnd* pParent = NULL); // <20><>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><ECBAAF>
virtual ~CDlgLightRegion();
// <20>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum { IDD = IDD_DIALOG_LIGHTREGION };
CBCGPChartCtrl m_wndChart;
CBCGPChartVisualObject* pChart;
CBCGPChartAxis* pXAxis;
CBCGPChartAxis* pYAxis;
CBCGPChartSeries* pSeries1;
CBCGPChartSeries* pSeries2;
CBCGPChartSeries* pSeries3;
CBCGPChartLineObject* m_pLine1;
CBCGPStrokeStyle m_strokeStyle;
CBCGPChartTextObject* m_pTextTip;
double m_dGroundLon; //<2F><><EFBFBD><EFBFBD>վ<EFBFBD><D5BE><EFBFBD><EFBFBD>
double m_dGroundLat; //<2F><><EFBFBD><EFBFBD>վγ<D5BE><CEB3>
float m_fGroudAlt; //<2F><><EFBFBD><EFBFBD>վ<EFBFBD>߳<EFBFBD>
double m_dCabinHgt; //<2F><><EFBFBD>ձ<EFBFBD><D5B1><EFBFBD><EFBFBD>߶<EFBFBD>
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧<><D6A7>
DECLARE_MESSAGE_MAP()
public:
virtual BOOL OnInitDialog();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վλ<D5BE><CEBB>
afx_msg void OnBnClickedButtonDrawPoint();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>¶Ի<C2B6><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
afx_msg LRESULT OnSendUpdateDialog(WPARAM wParam, LPARAM lParam);
/*-------------------------------------------------------------------------------------------------------------
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------------------------------*/
public:
HANDLE hThreadRegion;
DWORD ThreadIDRegion;
int m_iFlightAlt; //<2F><><EFBFBD>и߶<D0B8>
int m_iRegionRadius; //<2F><><EFBFBD><EFBFBD><EFBFBD>
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
CBCGPVisualContainerCtrl m_RegionTextContainer;
CBCGPTextGaugeImpl* m_pRegionTTextIndicator;
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>DZ<EFBFBD>
void InitRegionTextContainer();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
afx_msg void OnBnClickedButtonRegionAnaylsis();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
afx_msg void OnBnClickedButtonRegionDelete();
/*-------------------------------------------------------------------------------------------------------------
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱͨ<EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------------------------------*/
public:
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʵʱͨ<CAB1>Ӽ<EFBFBD><D3BC><EFBFBD>
BOOL m_bRealTime_Visi;
HANDLE hThreadDetect;
DWORD ThreadIDDetect;
//ѡ<><D1A1>ʵʱͨ<CAB1>Ӽ<EFBFBD><D3BC><EFBFBD>
afx_msg void OnBnClickedCheckRealtime();
//<2F><>ͼ<EFBFBD><CDBC>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>ܱ߻<DCB1><DFBB>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>
void DrawVisiAreaRealTime(double uavAlt, double distanceToGCS, double angleToGCS, double lonGCS, double latGCS);
/*-------------------------------------------------------------------------------------------------------------
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱ<EFBFBD><EFBFBD>ײ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------------------------------*/
public:
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʵʱ<CAB5><CAB1>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD>
BOOL m_bRealTime_Crash;
HANDLE hThreadCrash;
DWORD ThreadIDCrash;
//ѡ<><D1A1>ʵʱ<CAB5><CAB1>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD>
afx_msg void OnBnClickedCheckRtDetection();
//<2F><>ͼ<EFBFBD><CDBC>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>ܱ߼<DCB1><DFBC><EFBFBD><EFBFBD>߳<EFBFBD>
void DrawCrashAreaRealTime(double uavAlt, double uavLon, double uavLat);
/*-------------------------------------------------------------------------------------------------------------
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------------------------------*/
HANDLE hThreadRoute;
DWORD ThreadIDRoute;
CBCGPVisualContainerCtrl m_LineTextContainer;
CBCGPTextGaugeImpl* m_pLineTextIndicator;
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>DZ<EFBFBD>
void InitLineTextContainer();
//<2F><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
afx_msg void OnBnClickedButtonLoadRoute();
//<2F><><EFBFBD><EFBFBD><E6BABD>ͨ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
afx_msg void OnBnClickedButtonSaveImage();
//ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
afx_msg void OnBnClickedButtonStopRoute();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
afx_msg void OnBnClickedButtonClearResult();
afx_msg LRESULT OnMouseDown(WPARAM wp, LPARAM lp);
/*-------------------------------------------------------------------------------------------------------------
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱ<EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------------------------------*/
public:
HANDLE hThreadLight;
DWORD ThreadIDLight;
BOOL m_bRTlight; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʵʱ<CAB5><CAB1><EFBFBD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ-<2D>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//ѡ<><D1A1>ʵʱ<CAB5><CAB1><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>
afx_msg void OnBnClickedCheckRtLight();
//ʵʱ<CAB5><CAB1><EFBFBD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ-<2D>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><C9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void AnalysisRealTime(double uavAlt, double distanceToGCS, double angleToGCS, double lonGCS, double latGCS);
/*-------------------------------------------------------------------------------------------------------------
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ӵȸ<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------------------------------*/
HANDLE hThreadContour;
DWORD ThreadIDContour;
int m_iMaxLosAlt; //<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD>ӵȸ<D3B5><C8B8>߸߶<DFB8>
CBCGPVisualContainerCtrl m_ContourTextContainer;
CBCGPTextGaugeImpl* m_pContourTextIndicator;
//<2F><>ʼ<EFBFBD><CABC>ͨ<EFBFBD>ӵȸ<D3B5><C8B8>߷<EFBFBD><DFB7><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>DZ<EFBFBD>
void InitContourTextContainer();
//ͨ<>ӵȸ<D3B5><C8B8>߷<EFBFBD><DFB7><EFBFBD>
afx_msg void OnBnClickedButtonContourline();
//<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD>ӵȸ<D3B5><C8B8>߷<EFBFBD><DFB7><EFBFBD>
afx_msg void OnBnClickedButtonContourDelete();
/*-------------------------------------------------------------------------------------------------------------
˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ӷ<EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------------------------------------------------------*/
afx_msg void OnBnClickedButtonSelectPtInMap();
void ShowPointPosition(double ptLon, double ptLat);
void LosBetweenTwoPoints();
afx_msg void OnBnClickedButtonClearLineLayer();
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnBnClickedButtonGetAltValue();
afx_msg void OnBnClickedButtonReverse();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ս<EFBFBD><D5BD>Χ
afx_msg void OnBnClickedButtonDrawFight();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ս<EFBFBD><D5BD>Χ
afx_msg void OnBnClickedButtonDeleteFight();
//<2F><>ս<EFBFBD>
int m_iFightRegion;
//<2F><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
afx_msg void OnBnClickedButtonGetDemRegion();
};