From f179fa6d1669f6be25b7d44b6162f0756f6ffc60 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Thu, 25 May 2023 15:26:06 +0500 Subject: [PATCH] rotate trajectory coordinates --- .../Data/TrajectoryVisualizationDto.cs | 6 ++--- .../TrajectoryVisualizationService.cs | 26 ++++++++++--------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/AsbCloudApp/Data/TrajectoryVisualizationDto.cs b/AsbCloudApp/Data/TrajectoryVisualizationDto.cs index 8e47ccd5..bd75037c 100644 --- a/AsbCloudApp/Data/TrajectoryVisualizationDto.cs +++ b/AsbCloudApp/Data/TrajectoryVisualizationDto.cs @@ -6,17 +6,17 @@ public class TrajectoryVisualizationDto { /// - /// Координаты по оси X, в сторону севера (м) + /// Координаты по оси X, в сторону востока (м) /// public double X { get; set; } /// - /// Координаты по оси Y, в сторону востока (м) + /// Координаты по оси Y, в высоту (м) /// public double Y { get; set; } /// - /// Координаты по оси Z, глубина (м) + /// Координаты по оси Z, в сторону юга (м) /// public double Z { get; set; } } diff --git a/AsbCloudInfrastructure/Services/Trajectory/TrajectoryVisualizationService.cs b/AsbCloudInfrastructure/Services/Trajectory/TrajectoryVisualizationService.cs index 7428cda2..eb9d339b 100644 --- a/AsbCloudInfrastructure/Services/Trajectory/TrajectoryVisualizationService.cs +++ b/AsbCloudInfrastructure/Services/Trajectory/TrajectoryVisualizationService.cs @@ -1,6 +1,8 @@ using AsbCloudApp.Data; using AsbCloudApp.Repositories; using AsbCloudApp.Services; +using DocumentFormat.OpenXml.Office2021.MipLabelMetaData; +using DocumentFormat.OpenXml.Spreadsheet; using System; using System.Collections.Generic; using System.Linq; @@ -14,7 +16,7 @@ namespace AsbCloudInfrastructure.Services.Trajectory { private readonly IPlannedTrajectoryRepository plannedRepository; private readonly IActualTrajectoryRepository factualRepository; - + public TrajectoryVisualizationService(IPlannedTrajectoryRepository plannedRepository, IActualTrajectoryRepository factualRepository) { this.plannedRepository = plannedRepository; @@ -40,6 +42,8 @@ namespace AsbCloudInfrastructure.Services.Trajectory return result; } + record struct Location(double North, double East, double Depth); + /// /// Формирует список координат для визуализации трактории 3D /// @@ -51,7 +55,7 @@ namespace AsbCloudInfrastructure.Services.Trajectory if (geoCoordinatesLength < 2) return new TrajectoryVisualizationDto[0]; - var cartesianCoordinates = new TrajectoryVisualizationDto[geoCoordinatesLength]; + var cartesianCoordinates = new Location[geoCoordinatesLength]; cartesianCoordinates[0] = new(); var geoCoordinatesArray = geoCoordinates.OrderBy(c => c.WellboreDepth).ToArray(); @@ -61,22 +65,20 @@ namespace AsbCloudInfrastructure.Services.Trajectory var deltaWellLength = geoCoordinatesArray[i].WellboreDepth - intervalGeoParams.WellboreDepth; var projectionLengthToXYSurface = deltaWellLength * Math.Sin(intervalGeoParams.ZenithAngle * Math.PI / 180); - var dz = deltaWellLength * Math.Cos(intervalGeoParams.ZenithAngle * Math.PI / 180); - var dx = projectionLengthToXYSurface * Math.Sin(intervalGeoParams.AzimuthGeo * Math.PI / 180); - var dy = projectionLengthToXYSurface * Math.Cos(intervalGeoParams.AzimuthGeo * Math.PI / 180); + var dDepth = deltaWellLength * Math.Cos(intervalGeoParams.ZenithAngle * Math.PI / 180); + var dNorth = projectionLengthToXYSurface * Math.Sin(intervalGeoParams.AzimuthGeo * Math.PI / 180); + var dEast = projectionLengthToXYSurface * Math.Cos(intervalGeoParams.AzimuthGeo * Math.PI / 180); var preCoordinates = cartesianCoordinates[i - 1]; - var coordinates = new TrajectoryVisualizationDto - { - Z = preCoordinates.Z + dz, - X = preCoordinates.X + dx, - Y = preCoordinates.Y + dy, - }; + var coordinates = new Location( + preCoordinates.North + dNorth, + preCoordinates.East + dEast, + preCoordinates.Depth + dDepth); cartesianCoordinates[i] = coordinates; } - return cartesianCoordinates; + return cartesianCoordinates.Select(location => new TrajectoryVisualizationDto { X = location.East, Y = - location.Depth, Z = - location.North}); } }