EllipseController.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Threading.Tasks;
  7. using System.Web.Http;
  8. using DevExpress.Data.Svg;
  9. using XdCxRhDW.Api;
  10. using XdCxRhDW.Dto;
  11. using XdCxRhDW.Entity;
  12. using XdCxRhDW.Repostory;
  13. using XdCxRhDW.WebApi;
  14. namespace XdCxRhDW.App.Controllers
  15. {
  16. /// <summary>
  17. /// 误差椭圆相关接口
  18. /// </summary>
  19. public class EllipseController : BaseController
  20. {
  21. /// <summary>
  22. /// 两星一地误差椭圆(带参)
  23. /// </summary>
  24. /// <param name="dto"></param>
  25. /// <returns></returns>
  26. public async Task<AjaxResult<ErrEllipseResDto>> X2D1(ErrEllipseX2D1Dto dto)
  27. {
  28. return await Task.Run(() =>
  29. {
  30. double[] mainEcef = new double[3] { dto.MainX, dto.MainY, dto.MainZ };
  31. double[] adjaEcef = new double[3] { dto.AdjaX, dto.AdjaY, dto.AdjaZ };
  32. double[] cdbLoc = new double[2] { dto.CdbLon, dto.CdbLat };
  33. double[] refLoc = new double[2] { dto.RefLon, dto.RefLat };
  34. var res = ErrEllipseHepler.ErrorEllipse2X1D(dto.PosLon, dto.PosLat, mainEcef, adjaEcef, cdbLoc, refLoc, dto.DtoErrus, dto.EphErr, dto.OutputErrPoint,dto.Pe);
  35. return Success(res);
  36. });
  37. }
  38. /// <summary>
  39. /// 两星一地误差椭圆(无参)
  40. /// </summary>
  41. /// <param name="dto"></param>
  42. /// <returns></returns>
  43. public async Task<AjaxResult<ErrEllipseResDto>> X2D1NoRef(ErrEllipseX2D1NoRefDto dto)
  44. {
  45. return await Task.Run(() =>
  46. {
  47. double[] mainEcef = new double[3] { dto.MainX, dto.MainY, dto.MainZ };
  48. double[] adjaEcef = new double[3] { dto.AdjaX, dto.AdjaY, dto.AdjaZ };
  49. double[] cdbLoc = new double[2] { dto.CdbLon, dto.CdbLat };
  50. var res = ErrEllipseHepler.ErrorEllipse2X1DNoRef(dto.PosLon, dto.PosLat, mainEcef, adjaEcef, cdbLoc, dto.DtoErrus, dto.EphErr, dto.OutputErrPoint,dto.Pe);
  51. return Success(res);
  52. });
  53. }
  54. /// <summary>
  55. /// 低轨单星带参误差椭圆
  56. /// </summary>
  57. /// <param name="dto"></param>
  58. /// <returns></returns>
  59. public async Task<AjaxResult<ErrEllipseResDto>> X1Leo(ErrorEllipseLeoX1Dto dto)
  60. {
  61. return await Task.Run(() =>
  62. {
  63. ErrorEllipseX1Option option = new ErrorEllipseX1Option();
  64. option.MsEph = dto.MsEph;
  65. option.NsEph1 = dto.NsEph1;
  66. option.NsEph2 = dto.NsEph2;
  67. option.SelectPoint = dto.SelectPoint;
  68. option.DfoErr = dto.DfoErr;
  69. option.EphPosErr = dto.EphPosErr;
  70. option.EphVelErr = dto.EphVelErr;
  71. option.fu = dto.fu;
  72. option.Pe = dto.Pe;
  73. var res = LeoErrorEllipseHelper.ErrorEllipseLeoX1(option, dto.OutputErrPoint);
  74. return Success(res);
  75. });
  76. }
  77. /// <summary>
  78. /// 低轨双星带参误差椭圆
  79. /// </summary>
  80. /// <param name="dto"></param>
  81. /// <returns></returns>
  82. public async Task<AjaxResult<ErrEllipseResDto>> X2Leo(ErrorEllipseLeoX2Dto dto)
  83. {
  84. return await Task.Run(() =>
  85. {
  86. ErrorEllipseX2Option option = new ErrorEllipseX2Option();
  87. option.MsEph = dto.MsEph;
  88. option.NsEph = dto.NsEph;
  89. option.RefGeod = dto.RefGeod;
  90. option.SelectPoint = dto.SelectPoint;
  91. option.DtoErr = dto.DtoErr;
  92. option.DfoErr = dto.DfoErr;
  93. option.EphPosErr = dto.EphPosErr;
  94. option.EphVelErr = dto.EphVelErr;
  95. option.fu1 = dto.fu1;
  96. option.fu2 = dto.fu2;
  97. option.Pe = dto.Pe;
  98. var res = LeoErrorEllipseHelper.ErrorEllipseLeoX2(option, dto.OutputErrPoint);
  99. return Success(res);
  100. });
  101. }
  102. /// <summary>
  103. /// 低轨三星带参误差椭圆
  104. /// </summary>
  105. /// <param name="dto"></param>
  106. /// <returns></returns>
  107. public async Task<AjaxResult<ErrEllipseResDto>> X3Leo(ErrorEllipseLeoX3Dto dto)
  108. {
  109. return await Task.Run(() =>
  110. {
  111. ErrorEllipseX3Option option = new ErrorEllipseX3Option();
  112. option.MsEph = dto.MsEph;
  113. option.NsEph1 = dto.NsEph1;
  114. option.NsEph2 = dto.NsEph2;
  115. option.RefGeod = dto.RefGeod;
  116. option.SelectPoint = dto.SelectPoint;
  117. option.DtoErr = dto.DtoErr;
  118. option.DfoErr = dto.DfoErr;
  119. option.EphPosErr = dto.EphPosErr;
  120. option.EphVelErr = dto.EphVelErr;
  121. option.fu1 = dto.fu1;
  122. option.fu2 = dto.fu2;
  123. option.Pe = dto.Pe;
  124. var res = LeoErrorEllipseHelper.ErrorEllipseLeoX3(option, dto.OutputErrPoint);
  125. return Success(res);
  126. });
  127. }
  128. }
  129. }