타겟 추적 알고리즘 예제 소스
2021. 10. 10. 17:46ㆍ프로그래밍
반응형
타겟 특정 후 이동 추적 알고리즘
private void BeginTargetTrace()
{
try
{
Point mp = Mouse.GetPosition(this);
Rect bearingRect = new Rect(174 + 83, 8 + 17, 1350, 183 - 17);
Rect attChIndicateRect = new Rect(174 + 83, 8 + 183 + 17, 1350, 176);
if (UtilsManager.IsMasterPos(Bearing, mp, bearingRect)) {
double dBearing = Bearing.GetChkAngleByPos(mp.X - bearingRect.Left);
switch (DataManagerUnit1.BDTSystemInfo.unSensorIndex[0])
{
case 0: case 1: PublisherWideBandTarget(1, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 4: case 5: PublisherWideBandTarget(2, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 10: PublisherWideBandTarget(3, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 2: PublisherNarrowBandTarget(4, 5, byte.MaxValue, 2, dBearing, 1); break;
case 6: PublisherNarrowBandTarget(5, 5, byte.MaxValue, 2, dBearing, 1); break;
case 7: case 8: PublisherNarrowBandTarget(6, 5, byte.MaxValue, 2, dBearing, 1); break;
}
}
else if (UtilsManager.IsMasterPos(ATTChannelIndicationLine, mp, attChIndicateRect)) {
double dBearing = ATTChannelIndicationLine.GetChkAngleByPos(mp.X - attChIndicateRect.Left);
if (attChIndicateRect.Top < mp.Y && mp.Y <= attChIndicateRect.Top + 22) PublisherWideBandTarget(1, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode);
else if (attChIndicateRect.Top + 22 < mp.Y && mp.Y <= attChIndicateRect.Top + 44) PublisherNarrowBandTarget(4, 5, byte.MaxValue, byte.MaxValue, dBearing, 1);
else if (attChIndicateRect.Top + 44 < mp.Y && mp.Y <= attChIndicateRect.Top + 66) PublisherWideBandTarget(3, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode);
else if (attChIndicateRect.Top + 66 < mp.Y && mp.Y <= attChIndicateRect.Top + 88) PublisherInterceptTarget(byte.MaxValue, 1, byte.MaxValue, dBearing, 1);
else if (attChIndicateRect.Top + 88 < mp.Y && mp.Y <= attChIndicateRect.Top + 110) PublisherWideBandTarget(2, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode);
else if (attChIndicateRect.Top + 110 < mp.Y && mp.Y <= attChIndicateRect.Top + 132) PublisherNarrowBandTarget(5, 5, byte.MaxValue, byte.MaxValue, dBearing, 1);
else if (attChIndicateRect.Top + 132 < mp.Y && mp.Y <= attChIndicateRect.Top + 154) PublisherNarrowBandTarget(6, 5, byte.MaxValue, byte.MaxValue, dBearing, 1);
else if (attChIndicateRect.Top + 154 < mp.Y && mp.Y <= attChIndicateRect.Top + 176) {
switch (DataManagerUnit1.BDTSystemInfo.unSensorIndex[0])
{
case 0: case 1: PublisherWideBandTarget(1, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 4: case 5: PublisherWideBandTarget(2, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 10: PublisherWideBandTarget(3, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 2: PublisherNarrowBandTarget(4, 5, byte.MaxValue, 2, dBearing, 1); break;
case 6: PublisherNarrowBandTarget(5, 5, byte.MaxValue, 2, dBearing, 1); break;
case 7: case 8: PublisherNarrowBandTarget(6, 5, byte.MaxValue, 2, dBearing, 1); break;
}
}
}
else {
double dBearing = Bearing.GetChkAngleByPos(mp.X - bearingRect.Left);
if (DataManagerUnit1.BDTSystemInfo.unSensorIndex[1].Equals(13)) {
if (UtilsManager.IsMasterPos(MainWaterfall, mp, MainWaterfall.Tag as Rect?))
{
switch (DataManagerUnit1.BDTSystemInfo.unSensorIndex[0])
{
case 0: case 1: PublisherWideBandTarget(1, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 4: case 5: PublisherWideBandTarget(2, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 10: PublisherWideBandTarget(3, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 2: PublisherNarrowBandTarget(4, 5, byte.MaxValue, 2, dBearing, 1); break;
case 6: PublisherNarrowBandTarget(5, 5, byte.MaxValue, 2, dBearing, 1); break;
case 7: case 8: PublisherNarrowBandTarget(6, 5, byte.MaxValue, 2, dBearing, 1); break;
}
}
}
else {
if (UtilsManager.IsMasterPos(CompareWaterfall, mp, CompareWaterfall.Tag as Rect?))
{
switch (DataManagerUnit1.BDTSystemInfo.unSensorIndex[0])
{
case 0: case 1: PublisherWideBandTarget(1, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 4: case 5: PublisherWideBandTarget(2, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 10: PublisherWideBandTarget(3, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 2: PublisherNarrowBandTarget(4, 5, byte.MaxValue, 2, dBearing, 1); break;
case 6: PublisherNarrowBandTarget(5, 5, byte.MaxValue, 2, dBearing, 1); break;
case 7: case 8: PublisherNarrowBandTarget(6, 5, byte.MaxValue, 2, dBearing, 1); break;
}
}
else if (UtilsManager.IsMasterPos(CompareWaterfall2, mp, CompareWaterfall2.Tag as Rect?))
{
switch (DataManagerUnit1.BDTSystemInfo.unSensorIndex[1])
{
case 0: case 1: PublisherWideBandTarget(1, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 4: case 5: PublisherWideBandTarget(2, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 10: PublisherWideBandTarget(3, 1, byte.MaxValue, dBearing, 1, (byte)DataManager._CMSHCI_MGR_TARGET_DESIGNATION_MODE_SET_RESPONSE.unDesignationMode); break;
case 2: PublisherNarrowBandTarget(4, 5, byte.MaxValue, 2, dBearing, 1); break;
case 6: PublisherNarrowBandTarget(5, 5, byte.MaxValue, 2, dBearing, 1); break;
case 7: case 8: PublisherNarrowBandTarget(6, 5, byte.MaxValue, 2, dBearing, 1); break;
}
}
}
}
}
catch (Exception ee)
{
TraceManager.AddLog(string.Format("{0}r\n{1}", ee.StackTrace, ee.Message));
System.Diagnostics.Debug.WriteLine(string.Format("{0}r\n{1}", ee.StackTrace, ee.Message));
}
}
반응형
'프로그래밍' 카테고리의 다른 글
ArrowLineBase 구조체 예제 (0) | 2021.11.03 |
---|---|
WaterfallInfo에 따른 그래프 변경 함수 예제 (2) | 2021.10.16 |
레이더 윈도우 리프레쉬 예제 소스 (0) | 2021.09.23 |
현 모드 체크 후 상황에 맞춰 업데이트 실행 예제 (0) | 2021.09.17 |
C# 윈도우폼 콤보박스 클릭 시 처리 예제 (0) | 2021.09.11 |