TarDfoLeoX1Calc.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using ExtensionsDev;
  2. using System;
  3. using System.Windows.Forms;
  4. using XdCxRhDW.Api.AddIns;
  5. namespace XdCxRhDW.App.EditForms
  6. {
  7. public partial class TarDfoLeoX1Calc : DevExpress.XtraEditors.XtraForm
  8. {
  9. public TarDfoLeoX1Calc()
  10. {
  11. InitializeComponent();
  12. this.layoutControl1.UseDefault();
  13. this.StartPosition = FormStartPosition.CenterParent;
  14. }
  15. public TarDfoLeoX1Calc(double lon, double lat)
  16. : this()
  17. {
  18. this.txtTar.Text = $"{lon:f3},{lat:f3}";
  19. var time1SatInfo = "1234,-1608416.82,5994263.83,3139842.12,-6632.9542,-373.9141,-2678.0471";
  20. var time2SatInfo = "1234,-3479304.94,5612482.70,2187901.77,-5784.2167,-2163.5059,-3632.7021";
  21. var time3SatInfo = "1234,-5018683.88,4714452.40,1001435.81,-4399.2159,-3780.5070,-4206.3348";
  22. this.lcX1.Text = "第一时刻主星坐标X";
  23. this.lcY1.Text = "第一时刻主星坐标Y";
  24. this.lcZ1.Text = "第一时刻主星坐标Z";
  25. this.lcVX1.Text = "第一时刻主星坐标VX";
  26. this.lcVY1.Text = "第一时刻主星坐标VY";
  27. this.lcVZ1.Text = "第一时刻主星坐标VZ";
  28. this.lcX2.Text = "第二时刻主星坐标X";
  29. this.lcY2.Text = "第二时刻主星坐标Y";
  30. this.lcZ2.Text = "第二时刻主星坐标Z";
  31. this.lcVX2.Text = "第二时刻主星坐标VX";
  32. this.lcVY2.Text = "第二时刻主星坐标VY";
  33. this.lcVZ2.Text = "第二时刻主星坐标VZ";
  34. var t1 = time1SatInfo.Split(',');
  35. int idx = 0;
  36. txtX1.EditValue = t1[++idx];
  37. txtY1.EditValue = t1[++idx];
  38. txtZ1.EditValue = t1[++idx];
  39. txtVX1.EditValue = t1[++idx];
  40. txtVY1.EditValue = t1[++idx];
  41. txtVZ1.EditValue = t1[++idx];
  42. var t2 = time2SatInfo.Split(',');
  43. idx = 0;
  44. txtX2.EditValue = t2[++idx];
  45. txtY2.EditValue = t2[++idx];
  46. txtZ2.EditValue = t2[++idx];
  47. txtVX2.EditValue = t2[++idx];
  48. txtVY2.EditValue = t2[++idx];
  49. txtVZ2.EditValue = t2[++idx];
  50. var t3 = time3SatInfo.Split(',');
  51. idx = 0;
  52. txtX21.EditValue = t3[++idx];
  53. txtY21.EditValue = t3[++idx];
  54. txtZ21.EditValue = t3[++idx];
  55. txtVX21.EditValue = t3[++idx];
  56. txtVY21.EditValue = t3[++idx];
  57. txtVZ21.EditValue = t3[++idx];
  58. }
  59. private async void btnOk_Click(object sender, EventArgs e)
  60. {
  61. try
  62. {
  63. var strTar = txtTar.Text.Replace(",", ",");
  64. var tarfuHz = (Convert.ToDouble(txtTarFuMhz.Text) + 44) * 1e6;
  65. double lon = Convert.ToDouble(strTar.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[0]);
  66. double lat = Convert.ToDouble(strTar.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[1]);
  67. double x1 = Convert.ToDouble(txtX1.Text);
  68. double y1 = Convert.ToDouble(txtY1.Text);
  69. double z1 = Convert.ToDouble(txtZ1.Text);
  70. double vx1 = Convert.ToDouble(txtVX1.Text);
  71. double vy1 = Convert.ToDouble(txtVY1.Text);
  72. double vz1 = Convert.ToDouble(txtVZ1.Text);
  73. double[] ephX1 = new double[6] { x1, y1, z1, vx1, vy1, vz1 };
  74. double x2 = Convert.ToDouble(txtX2.Text);
  75. double y2 = Convert.ToDouble(txtY2.Text);
  76. double z2 = Convert.ToDouble(txtZ2.Text);
  77. double vx2 = Convert.ToDouble(txtVX2.Text);
  78. double vy2 = Convert.ToDouble(txtVY2.Text);
  79. double vz2 = Convert.ToDouble(txtVZ2.Text);
  80. double[] ephX2 = new double[6] { x2, y2, z2, vx2, vy2, vz2 };
  81. double[] targetPos = new double[3] { lon, lat, 0 };
  82. var tardf1 = DfoCalcAPI.DfoCalc(targetPos, ephX1, tarfuHz);
  83. var tardf2 = DfoCalcAPI.DfoCalc(targetPos, ephX2, tarfuHz);
  84. double x3 = Convert.ToDouble(txtX21.Text);
  85. double y3 = Convert.ToDouble(txtY21.Text);
  86. double z3 = Convert.ToDouble(txtZ21.Text);
  87. double vx3 = Convert.ToDouble(txtVX21.Text);
  88. double vy3 = Convert.ToDouble(txtVY21.Text);
  89. double vz3 = Convert.ToDouble(txtVZ21.Text);
  90. double[] ephX3 = new double[6] { x3, y3, z3, vx3, vy3, vz3 };
  91. var tardf3 = DfoCalcAPI.DfoCalc(targetPos, ephX3, tarfuHz);
  92. this.txtRes.Text =$"第二时刻目标频差预测值:{tardf2 - tardf1:f3}Hz 第三时刻目标频差预测值:{tardf3 - tardf1:f3}Hz";
  93. }
  94. catch (Exception ex)
  95. {
  96. await LogHelper.Error("频差预测出错", ex);
  97. DxHelper.MsgBoxHelper.ShowError("频差预测出错");
  98. }
  99. }
  100. }
  101. }