From 3d76ae3155f74ced3e0b40edb06a4fcab8b8865b 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 | 24 +++++++++---------- 2 files changed, 15 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..926734f5 100644 --- a/AsbCloudInfrastructure/Services/Trajectory/TrajectoryVisualizationService.cs +++ b/AsbCloudInfrastructure/Services/Trajectory/TrajectoryVisualizationService.cs @@ -14,7 +14,7 @@ namespace AsbCloudInfrastructure.Services.Trajectory { private readonly IPlannedTrajectoryRepository plannedRepository; private readonly IActualTrajectoryRepository factualRepository; - + public TrajectoryVisualizationService(IPlannedTrajectoryRepository plannedRepository, IActualTrajectoryRepository factualRepository) { this.plannedRepository = plannedRepository; @@ -40,6 +40,8 @@ namespace AsbCloudInfrastructure.Services.Trajectory return result; } + record struct Location(double North, double East, double Depth); + /// /// Формирует список координат для визуализации трактории 3D /// @@ -51,7 +53,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 +63,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}); } }