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});
}
}